From ff91432a688079743682d077fe8d924bdda55a7b Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 13:09:58 -0500 Subject: [PATCH 01/15] Specs use generalized format so that it can be used for benchmarking --- agora-test/Spec.hs | 38 +++++++------------- agora-test/Spec/AuthorityToken.hs | 16 +++++---- agora-test/Spec/Effect/GovernorMutation.hs | 22 +++++++----- agora-test/Spec/Effect/TreasuryWithdrawal.hs | 18 ++++++---- agora-test/Spec/Governor.hs | 20 ++++++----- agora-test/Spec/Proposal.hs | 24 +++++++------ agora-test/Spec/Stake.hs | 25 +++++++------ agora-test/Spec/Treasury.hs | 24 +++++++------ agora.cabal | 1 + 9 files changed, 103 insertions(+), 85 deletions(-) diff --git a/agora-test/Spec.hs b/agora-test/Spec.hs index 2d97c1e..3162fd8 100644 --- a/agora-test/Spec.hs +++ b/agora-test/Spec.hs @@ -2,6 +2,7 @@ import Prelude -------------------------------------------------------------------------------- +import GHC.IO.Encoding (setLocaleEncoding, utf8) import Test.Tasty (defaultMain, testGroup) -------------------------------------------------------------------------------- @@ -16,39 +17,26 @@ import Spec.Stake qualified as Stake import Spec.Treasury qualified as Treasury import Spec.Utils qualified as Utils +import Spec.Spec (group, toTestTree) + -- | The Agora test suite. main :: IO () -main = +main = do + setLocaleEncoding utf8 defaultMain $ testGroup "test suite" [ testGroup "Effects" - [ testGroup - "Treasury Withdrawal Effect" - TreasuryWithdrawal.tests - , testGroup - "Governor Mutation Effect" - GovernorMutation.tests + [ toTestTree $ group "Treasury Withdrawal Effect" TreasuryWithdrawal.specs + , toTestTree $ group "Governor Mutation Effect" GovernorMutation.specs ] - , testGroup - "Stake tests" - Stake.tests - , testGroup - "Proposal tests" - Proposal.tests - , testGroup - "AuthorityToken tests" - AuthorityToken.tests - , testGroup - "Treasury tests" - Treasury.tests - , testGroup - "AuthorityToken tests" - AuthorityToken.tests - , testGroup - "Governor tests" - Governor.tests + , toTestTree $ group "Stake tests" Stake.specs + , toTestTree $ group "Proposal tests" Proposal.specs + , toTestTree $ group "AuthorityToken tests" AuthorityToken.specs + , toTestTree $ group "Treasury tests" Treasury.specs + , toTestTree $ group "AuthorityToken tests" AuthorityToken.specs + , toTestTree $ group "Governor tests" Governor.specs , testGroup "Utility tests" Utils.tests diff --git a/agora-test/Spec/AuthorityToken.hs b/agora-test/Spec/AuthorityToken.hs index fdfda03..1ff3de2 100644 --- a/agora-test/Spec/AuthorityToken.hs +++ b/agora-test/Spec/AuthorityToken.hs @@ -7,13 +7,12 @@ Description: Tests for Authority token functions Tests for Authority token functions -} -module Spec.AuthorityToken (tests) where +module Spec.AuthorityToken (specs) where -------------------------------------------------------------------------------- import Agora.AuthorityToken (singleAuthorityTokenBurned) import Plutarch -import Test.Tasty (TestTree, testGroup) import Prelude -------------------------------------------------------------------------------- @@ -33,7 +32,12 @@ import Plutus.V1.Ledger.Api ( import Plutus.V1.Ledger.Interval qualified as Interval import Plutus.V1.Ledger.Value qualified as Value import PlutusTx.AssocMap qualified as AssocMap -import Test.Util (scriptFails, scriptSucceeds) +import Spec.Spec ( + SpecificationTree, + group, + scriptFails, + scriptSucceeds, + ) currencySymbol :: CurrencySymbol currencySymbol = "deadbeef" @@ -65,10 +69,10 @@ singleAuthorityTokenBurnedTest mint outs = perror in compile s -tests :: [TestTree] -tests = +specs :: [SpecificationTree] +specs = [ -- This is better suited for plutarch-test - testGroup + group "singleAuthorityTokenBurned" [ scriptSucceeds "Correct simple" diff --git a/agora-test/Spec/Effect/GovernorMutation.hs b/agora-test/Spec/Effect/GovernorMutation.hs index 18ed995..67cf59e 100644 --- a/agora-test/Spec/Effect/GovernorMutation.hs +++ b/agora-test/Spec/Effect/GovernorMutation.hs @@ -1,4 +1,4 @@ -module Spec.Effect.GovernorMutation (tests) where +module Spec.Effect.GovernorMutation (specs) where import Agora.Effect.GovernorMutation (mutateGovernorValidator) import Agora.Governor (GovernorDatum (..), GovernorRedeemer (MutateGovernor)) @@ -15,14 +15,20 @@ import Sample.Effect.GovernorMutation ( validNewGovernorDatum, ) import Sample.Shared qualified as Shared -import Test.Tasty (TestTree, testGroup) -import Test.Util (effectFailsWith, effectSucceedsWith, validatorFailsWith, validatorSucceedsWith) +import Spec.Spec ( + SpecificationTree, + effectFailsWith, + effectSucceedsWith, + group, + validatorFailsWith, + validatorSucceedsWith, + ) -tests :: [TestTree] -tests = - [ testGroup +specs :: [SpecificationTree] +specs = + [ group "validator" - [ testGroup + [ group "valid new governor datum" [ validatorSucceedsWith "governor validator should pass" @@ -44,7 +50,7 @@ tests = (mkEffectDatum validNewGovernorDatum) (ScriptContext (mkEffectTxInfo validNewGovernorDatum) (Spending effectRef)) ] - , testGroup + , group "invalid new governor datum" [ validatorFailsWith "governor validator should fail" diff --git a/agora-test/Spec/Effect/TreasuryWithdrawal.hs b/agora-test/Spec/Effect/TreasuryWithdrawal.hs index a380edb..9a6a485 100644 --- a/agora-test/Spec/Effect/TreasuryWithdrawal.hs +++ b/agora-test/Spec/Effect/TreasuryWithdrawal.hs @@ -3,9 +3,9 @@ Module : Spec.Effect.TreasuryWithdrawalEffect Maintainer : seungheon.ooh@gmail.com Description: Sample based testing for Treasury Withdrawal Effect -This module tests the Treasury Withdrawal Effect. +This module specs the Treasury Withdrawal Effect. -} -module Spec.Effect.TreasuryWithdrawal (tests) where +module Spec.Effect.TreasuryWithdrawal (specs) where import Agora.Effect.TreasuryWithdrawal ( TreasuryWithdrawalDatum (TreasuryWithdrawalDatum), @@ -25,12 +25,16 @@ import Sample.Effect.TreasuryWithdrawal ( treasuries, users, ) -import Test.Tasty (TestTree, testGroup) -import Test.Util (effectFailsWith, effectSucceedsWith) +import Spec.Spec ( + SpecificationTree, + effectFailsWith, + effectSucceedsWith, + group, + ) -tests :: [TestTree] -tests = - [ testGroup +specs :: [SpecificationTree] +specs = + [ group "effect" [ effectSucceedsWith "Simple" diff --git a/agora-test/Spec/Governor.hs b/agora-test/Spec/Governor.hs index 3ac39a2..3cbcb57 100644 --- a/agora-test/Spec/Governor.hs +++ b/agora-test/Spec/Governor.hs @@ -3,7 +3,7 @@ Module : Spec.Governor Maintainer : connor@mlabs.city Description: Tests for Agora governor. -Thie module exports `tests`, a list of `TestTree`s, which ensure +Thie module exports `specs`, a list of `TestTree`s, which ensure that Agora's governor component workds as intended. Tests should pass when the validator or policy is given one of the @@ -11,7 +11,7 @@ valid script contexts, which are defined in 'Agora.Sample.Governor'. TODO: Add negative test cases, see [#76](https://github.com/Liqwid-Labs/agora/issues/76). -} -module Spec.Governor (tests) where +module Spec.Governor (specs) where import Agora.Governor (GovernorDatum (..), GovernorRedeemer (..)) import Agora.Governor.Scripts (governorPolicy, governorValidator) @@ -19,14 +19,18 @@ import Agora.Proposal (ProposalId (..)) import Data.Default.Class (Default (def)) import Sample.Governor (createProposal, mintGATs, mintGST, mutateState) import Sample.Shared qualified as Shared -import Test.Tasty (TestTree, testGroup) -import Test.Util (policySucceedsWith, validatorSucceedsWith) +import Spec.Spec ( + SpecificationTree, + group, + policySucceedsWith, + validatorSucceedsWith, + ) -------------------------------------------------------------------------------- -tests :: [TestTree] -tests = - [ testGroup +specs :: [SpecificationTree] +specs = + [ group "policy" [ policySucceedsWith "GST minting" @@ -34,7 +38,7 @@ tests = () mintGST ] - , testGroup + , group "validator" [ validatorSucceedsWith "proposal creation" diff --git a/agora-test/Spec/Proposal.hs b/agora-test/Spec/Proposal.hs index c381126..c57fb78 100644 --- a/agora-test/Spec/Proposal.hs +++ b/agora-test/Spec/Proposal.hs @@ -7,7 +7,7 @@ Description: Tests for Proposal policy and validator Tests for Proposal policy and validator -} -module Spec.Proposal (tests) where +module Spec.Proposal (specs) where -------------------------------------------------------------------------------- @@ -45,15 +45,19 @@ import PlutusTx.AssocMap qualified as AssocMap import Sample.Proposal qualified as Proposal import Sample.Shared (signer, signer2) import Sample.Shared qualified as Shared -import Test.Tasty (TestTree, testGroup) -import Test.Util (policySucceedsWith, validatorSucceedsWith) +import Spec.Spec ( + SpecificationTree, + group, + policySucceedsWith, + validatorSucceedsWith, + ) -------------------------------------------------------------------------------- --- | Stake tests. -tests :: [TestTree] -tests = - [ testGroup +-- | Stake specs. +specs :: [SpecificationTree] +specs = + [ group "policy" [ policySucceedsWith "proposalCreation" @@ -61,9 +65,9 @@ tests = () Proposal.proposalCreation ] - , testGroup + , group "validator" - [ testGroup + [ group "cosignature" [ validatorSucceedsWith "proposal" @@ -97,7 +101,7 @@ tests = WitnessStake (ScriptContext (Proposal.cosignProposal [signer2]) (Spending Proposal.stakeRef)) ] - , testGroup + , group "voting" [ validatorSucceedsWith "proposal" diff --git a/agora-test/Spec/Stake.hs b/agora-test/Spec/Stake.hs index 3a3eacd..3b1ac09 100644 --- a/agora-test/Spec/Stake.hs +++ b/agora-test/Spec/Stake.hs @@ -7,7 +7,7 @@ Description: Tests for Stake policy and validator Tests for Stake policy and validator -} -module Spec.Stake (tests) where +module Spec.Stake (specs) where -------------------------------------------------------------------------------- @@ -15,10 +15,6 @@ import Prelude -------------------------------------------------------------------------------- -import Test.Tasty (TestTree, testGroup) - --------------------------------------------------------------------------------- - import Agora.Stake (Stake (..), StakeDatum (StakeDatum), StakeRedeemer (DepositWithdraw)) import Agora.Stake.Scripts (stakePolicy, stakeValidator) @@ -26,14 +22,21 @@ import Agora.Stake.Scripts (stakePolicy, stakeValidator) import Sample.Stake (DepositWithdrawExample (DepositWithdrawExample, delta, startAmount), signer) import Sample.Stake qualified as Stake -import Test.Util (policyFailsWith, policySucceedsWith, toDatum, validatorFailsWith, validatorSucceedsWith) +import Spec.Spec ( + SpecificationTree, + group, + policyFailsWith, + policySucceedsWith, + validatorFailsWith, + validatorSucceedsWith, + ) +import Test.Util (toDatum) -------------------------------------------------------------------------------- --- | Stake tests. -tests :: [TestTree] -tests = - [ testGroup +specs :: [SpecificationTree] +specs = + [ group "policy" [ policySucceedsWith "stakeCreation" @@ -51,7 +54,7 @@ tests = () Stake.stakeCreationUnsigned ] - , testGroup + , group "validator" [ validatorSucceedsWith "stakeDepositWithdraw deposit" diff --git a/agora-test/Spec/Treasury.hs b/agora-test/Spec/Treasury.hs index 0cd139f..03db77d 100644 --- a/agora-test/Spec/Treasury.hs +++ b/agora-test/Spec/Treasury.hs @@ -5,7 +5,7 @@ Module: Spec.Treasury Description: Tests for Agora treasury. Maintainer: jack@mlabs.city -This module exports `tests`, a list of `TestTree`s, which ensure +This module exports `specs`, a list of `TestTree`s, which ensure that Agora's treasury component works as desired. Tests need to fail when: @@ -19,7 +19,7 @@ Tests need to fail when: ii. A script has a GAT, the token name for which does /not/ match the script's validator hash. -} -module Spec.Treasury (tests) where +module Spec.Treasury (specs) where import Agora.Treasury ( TreasuryRedeemer (SpendTreasuryGAT), @@ -48,14 +48,18 @@ import Sample.Treasury ( validCtx, walletIn, ) -import Test.Tasty (TestTree, testGroup) -import Test.Util (validatorFailsWith, validatorSucceedsWith) +import Spec.Spec ( + SpecificationTree, + group, + validatorFailsWith, + validatorSucceedsWith, + ) -tests :: [TestTree] -tests = - [ testGroup +specs :: [SpecificationTree] +specs = + [ group "Validator" - [ testGroup + [ group "Positive" [ validatorSucceedsWith "Allows for effect changes" @@ -64,9 +68,9 @@ tests = SpendTreasuryGAT validCtx ] - , testGroup + , group "Negative" - [ testGroup + [ group "Fails with ScriptPurpose not Minting" [ validatorFailsWith "Spending" diff --git a/agora.cabal b/agora.cabal index 256e025..8677046 100644 --- a/agora.cabal +++ b/agora.cabal @@ -191,6 +191,7 @@ test-suite agora-test Spec.Governor Spec.Model.MultiSig Spec.Proposal + Spec.Spec Spec.Stake Spec.Treasury Spec.Utils From 16115d54e680544754fac321c63398ef21be8b6f Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 13:11:55 -0500 Subject: [PATCH 02/15] forgot one file --- agora-test/Spec/Spec.hs | 208 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 agora-test/Spec/Spec.hs diff --git a/agora-test/Spec/Spec.hs b/agora-test/Spec/Spec.hs new file mode 100644 index 0000000..a58deac --- /dev/null +++ b/agora-test/Spec/Spec.hs @@ -0,0 +1,208 @@ +module Spec.Spec ( + Specification (..), + SpecificationExpectation (..), + SpecificationTree (..), + group, + toTestTree, + getSpecification, + getSpecificationTree, + scriptSucceeds, + scriptFails, + policySucceedsWith, + policyFailsWith, + validatorSucceedsWith, + validatorFailsWith, + effectSucceedsWith, + effectFailsWith, +) where + +import Data.Maybe (catMaybes) +import Plutarch.Api.V1 (PMintingPolicy, PValidator) +import Plutarch.Builtin (pforgetData) +import Plutarch.Evaluate (evalScript) +import Plutarch.Lift (PUnsafeLiftDecl (PLifted)) +import Plutus.V1.Ledger.Api (Script, ScriptContext) +import PlutusTx.IsData qualified as PlutusTx (ToData) +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.HUnit (assertFailure, testCase) + +data SpecificationExpectation + = Success + | Failure + | FailureWith String + deriving stock (Show) + +data Specification = Specification + { sName :: String + , sExpectation :: SpecificationExpectation + , sScript :: Script + } + deriving stock (Show) + +data SpecificationTree + = Terminal Specification + | Group String [SpecificationTree] + deriving stock (Show) + +exists :: String -> SpecificationTree -> Bool +exists s (Terminal (Specification name _ _)) = s == name +exists s (Group name st) = or (exists s <$> st) || s == name + +group :: String -> [SpecificationTree] -> SpecificationTree +group name st + | or $ exists name <$> st = error "Name already exists" + | otherwise = Group name st + +getSpecification :: String -> SpecificationTree -> Maybe Specification +getSpecification name (Terminal spec@(Specification sn _ _)) + | name == sn = Just spec + | otherwise = Nothing +getSpecification name (Group _ st) + | length specs == 1 = Just $ head specs + | otherwise = Nothing + where + specs = catMaybes $ getSpecification name <$> st + +getSpecificationTree :: String -> SpecificationTree -> Maybe SpecificationTree +getSpecificationTree name specTree@(Group gn st) + | gn == name = Just specTree + | length trees == 1 = Just $ head trees + | otherwise = Nothing + where + trees = catMaybes $ getSpecificationTree name <$> st +getSpecificationTree _ _ = Nothing + +toTestTree :: SpecificationTree -> TestTree +toTestTree (Group name st) = testGroup name $ toTestTree <$> st +toTestTree (Terminal (Specification name expectation script)) = + testCase name $ do + case expectation of + Success -> onSuccess + Failure -> onFailure + FailureWith s -> onFailureWith s + where + (res, _budget, traces) = evalScript script + ts = " Traces: " <> show traces + onSuccess = case res of + Left e -> + assertFailure $ + show e <> ts + _ -> pure () + onFailure = case res of + Right v -> + assertFailure $ + "Expected failure, but succeeded. " + <> show v + <> ts + _ -> pure () + onFailureWith _s = case res of -- TODO: check Trace for this + Right v -> + assertFailure $ + "Expected failure, but succeeded. " + <> show v + <> ts + _ -> pure () + +scriptSucceeds :: String -> Script -> SpecificationTree +scriptSucceeds name script = Terminal $ Specification name Success script + +scriptFails :: String -> Script -> SpecificationTree +scriptFails name script = Terminal $ Specification name Failure script + +policySucceedsWith :: + ( PLift redeemer + , PlutusTx.ToData (PLifted redeemer) + ) => + String -> + ClosedTerm PMintingPolicy -> + PLifted redeemer -> + ScriptContext -> + SpecificationTree +policySucceedsWith tag policy redeemer scriptContext = + scriptSucceeds tag $ + compile + ( policy + # pforgetData (pconstantData redeemer) + # pconstant scriptContext + ) + +policyFailsWith :: + ( PLift redeemer + , PlutusTx.ToData (PLifted redeemer) + ) => + String -> + ClosedTerm PMintingPolicy -> + PLifted redeemer -> + ScriptContext -> + SpecificationTree +policyFailsWith tag policy redeemer scriptContext = + scriptFails tag $ + compile + ( policy + # pforgetData (pconstantData redeemer) + # pconstant scriptContext + ) + +validatorSucceedsWith :: + ( PLift datum + , PlutusTx.ToData (PLifted datum) + , PLift redeemer + , PlutusTx.ToData (PLifted redeemer) + ) => + String -> + ClosedTerm PValidator -> + PLifted datum -> + PLifted redeemer -> + ScriptContext -> + SpecificationTree +validatorSucceedsWith tag validator datum redeemer scriptContext = + scriptSucceeds tag $ + compile + ( validator + # pforgetData (pconstantData datum) + # pforgetData (pconstantData redeemer) + # pconstant scriptContext + ) + +validatorFailsWith :: + ( PLift datum + , PlutusTx.ToData (PLifted datum) + , PLift redeemer + , PlutusTx.ToData (PLifted redeemer) + ) => + String -> + ClosedTerm PValidator -> + PLifted datum -> + PLifted redeemer -> + ScriptContext -> + SpecificationTree +validatorFailsWith tag validator datum redeemer scriptContext = + scriptFails tag $ + compile + ( validator + # pforgetData (pconstantData datum) + # pforgetData (pconstantData redeemer) + # pconstant scriptContext + ) + +effectSucceedsWith :: + ( PLift datum + , PlutusTx.ToData (PLifted datum) + ) => + String -> + ClosedTerm PValidator -> + PLifted datum -> + ScriptContext -> + SpecificationTree +effectSucceedsWith tag eff datum = validatorSucceedsWith tag eff datum () + +effectFailsWith :: + ( PLift datum + , PlutusTx.ToData (PLifted datum) + ) => + String -> + ClosedTerm PValidator -> + PLifted datum -> + ScriptContext -> + SpecificationTree +effectFailsWith tag eff datum = validatorFailsWith tag eff datum () From 424ad15894b95291e688de8a9a6fe35a2b523cfb Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 13:52:42 -0500 Subject: [PATCH 03/15] agora-spec made independent from agora-test --- .../Spec/AuthorityToken.hs | 0 agora-spec/Spec/Effect/*agora* | 4299 +++++++++++++++++ .../Spec/Effect/GovernorMutation.hs | 0 .../Spec/Effect/TreasuryWithdrawal.hs | 0 agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ | 422 ++ {agora-test => agora-spec}/Spec/Governor.hs | 0 .../Spec/Model/MultiSig.hs | 0 {agora-test => agora-spec}/Spec/Proposal.hs | 0 {agora-test => agora-spec}/Spec/Spec.hs | 0 {agora-test => agora-spec}/Spec/Stake.hs | 0 {agora-test => agora-spec}/Spec/Treasury.hs | 0 {agora-test => agora-spec}/Spec/Utils.hs | 0 agora-test/README.org | 11 - agora.cabal | 20 +- 14 files changed, 4735 insertions(+), 17 deletions(-) rename {agora-test => agora-spec}/Spec/AuthorityToken.hs (100%) create mode 100644 agora-spec/Spec/Effect/*agora* rename {agora-test => agora-spec}/Spec/Effect/GovernorMutation.hs (100%) rename {agora-test => agora-spec}/Spec/Effect/TreasuryWithdrawal.hs (100%) create mode 100644 agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ rename {agora-test => agora-spec}/Spec/Governor.hs (100%) rename {agora-test => agora-spec}/Spec/Model/MultiSig.hs (100%) rename {agora-test => agora-spec}/Spec/Proposal.hs (100%) rename {agora-test => agora-spec}/Spec/Spec.hs (100%) rename {agora-test => agora-spec}/Spec/Stake.hs (100%) rename {agora-test => agora-spec}/Spec/Treasury.hs (100%) rename {agora-test => agora-spec}/Spec/Utils.hs (100%) delete mode 100644 agora-test/README.org diff --git a/agora-test/Spec/AuthorityToken.hs b/agora-spec/Spec/AuthorityToken.hs similarity index 100% rename from agora-test/Spec/AuthorityToken.hs rename to agora-spec/Spec/AuthorityToken.hs diff --git a/agora-spec/Spec/Effect/*agora* b/agora-spec/Spec/Effect/*agora* new file mode 100644 index 0000000..8716896 --- /dev/null +++ b/agora-spec/Spec/Effect/*agora* @@ -0,0 +1,4299 @@ +Your wish is my IO (). +If I break, you can: + 1. Restart: M-x haskell-process-restart + 2. Configure logging: C-h v haskell-process-log (useful for debugging) + 3. General config: M-x customize-mode + 4. Hide these tips: C-h v haskell-process-show-debug-tips +λ> :set -Wwarn=missing-home-modules +λ> :r + +: warning: [-Wmissing-home-modules] + These modules are needed for compilation but not listed in your .cabal file's other-modules: + Spec.Sample.Effect.TreasuryWithdrawal Spec.Sample.Sample Spec.Util +[1 of 4] Compiling Spec.Sample.Effect.TreasuryWithdrawal ( agora-test/Spec/Sample/Effect/TreasuryWithdrawal.hs, interpreted ) +[2 of 4] Compiling Spec.Sample.Sample ( agora-test/Spec/Sample/Sample.hs, interpreted ) +[3 of 4] Compiling Spec.Util ( agora-test/Spec/Util.hs, interpreted ) +[4 of 4] Compiling Spec.Effect.TreasuryWithdrawal ( /home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs, interpreted ) + +/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:139:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] + Defined but not used: `totalOutput' + | +139 | totalOutput = mconcat $ snd <$> r + | ^^^^^^^^^^^ +Failed, three modules loaded. +λ> :r + +: warning: [-Wmissing-home-modules] + These modules are needed for compilation but not listed in your .cabal file's other-modules: + Spec.Sample.Effect.TreasuryWithdrawal Spec.Sample.Sample Spec.Util +[4 of 4] Compiling Spec.Effect.TreasuryWithdrawal ( /home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs, interpreted ) + +/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:139:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] + Defined but not used: `totalOutput' + | +139 | totalOutput = mconcat $ snd <$> r + | ^^^^^^^^^^^ + +/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:140:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] + Defined but not used: `treasuryInput' + | +140 | treasuryInput = mconcat $ snd <$> (filter (\(c,_) -> elem c t) $ extractCredVal . txInInfoResolved <$> txInfoInputs info) + | ^^^^^^^^^^^^^ + +/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:141:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] + Defined but not used: `expected' + | +141 | expected = Value.unionWith (-) treasuryInput totalOutput + | ^^^^^^^^ +Failed, three modules loaded. +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) +(TreasuryWithdrawalDatum {receivers = [(PubKeyCredential 2938635e0019e4871e88be3e8e89d06e12fbe4e3604209a3b4f55b7d9b2e393e,Value (Map [(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",23)])])),(PubKeyCredential 31b1e0ad06a30dd22f4ad5545d5bfe35fd149d64978a22c87ecf04e0c55ea529,Value (Map [(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",20)])])),(PubKeyCredential 32dc4c7c66c03e532266eb45f8fff02e121fcafc74ebcf4fb41a0763133423d8,Value (Map [(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",29)])])),(PubKeyCredential 13d0c56bb73dac64888cdca66362e622f94054bf595feea8a59490f3f023bf46,Value (Map [(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",4)])])),(PubKeyCredential 646b746ab2aa538895e2ee7092020ee55fe5a0f610b8216de06a95af019d8928,Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",20)])]))], treasuries = [ScriptCredential b241707d05dcabcb3d896ddd47467ce5437f7f5223562e9b7a4e68c725047150,ScriptCredential 5aba4f8ae399fe68312c90339de967aa98c57f6c35c905c47936863ebf6577b3,ScriptCredential e431cf3d612906a6e017bc5de4faab3146fdeec419a967301d4082082ef7263c,ScriptCredential 58a6d0f846cb139b8bb03ed27cbd88a0b4ac5f54606a1518ba20ee7c3af1c5c8,ScriptCredential 8cbf28686420500cd5d1915b0e1de77778d225ef24ff9b5cc095fb33e907592b,ScriptCredential a1d7ccf38e2be07ff759cd121c24d3106865cca2c5f85e8a7ee2864ea32ccd23,ScriptCredential 397a6ceb85b32cc247b3cf815f234942b75a95387e2f97562e289829fdab059f,ScriptCredential d08bfa6ad3fe8bdc1e25beed51bc31b69c1e5dd3b50111c612888b6aaa491356,ScriptCredential 1c74efd016ab0a08546d1108c4d2dd144ec2b1c15726fd3cea634a9013961b74,ScriptCredential 0830503b1d996938edf1abd322220489ca9212516dabb4d87d73fcc960f85cab,ScriptCredential 5bac536f0fb820bd48acfe979491f9aa0270b148a81f4180b6b4f7d46066dba0,ScriptCredential 52671ada27514c352b8adbf5f9690e32035a5278156549a4484b807c7cecce51,ScriptCredential b833f95bc88b65a0a8a04d3cbbdd827ec77c52a8295cf0789062121f83a9d8e8,ScriptCredential b6269dcdb9a874bbabd74011935efe2bbb2bd6cd56d9855e34d4e86c962f42c4,ScriptCredential b8e294c54cc7a3ccaace33e336346b1debd37b375171d42be606c375e737989d,ScriptCredential c98e9e2b1a5759a05c45112d9e48d6f8758a041c2dfdaaaf5771db69d14a5503,ScriptCredential 96fdffd5abcf31b4a2c4c4eacbf3aefdc0ef3ac529f1e26c074381a1f3be9aee,ScriptCredential 8ac26aab7c9d3f96d52f7a07391731bfdd9c09e0c75216ece69fa3d5a35a21ef,ScriptCredential 2ed4ccab6b100c631e8c4c35cb41bed7e4bc62223e3ddfd32e6631edbee3d684,ScriptCredential 4a077124eff748319b61b183c20fe15ae97335fdcda9c53f51fb7a452888ce8c,ScriptCredential efcdd15b35674dcd601fd5cb7289c2d99a907598109330c6091bf196f8b2008f,ScriptCredential 0f5e99a2401ea995d4f5705903b2311f32c23b6f7a468140e4f7c8f863b2c0a7]},TxInfo {txInfoInputs = [TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential a6028fb63fe556132c6f6664ea3b0608b3bba501d16c25763fd4dbea, addressStakingCredential = Nothing}, txOutValue = Value (Map [(3132333132303939,Map [(0xa6028fb63fe556132c6f6664ea3b0608b3bba501d16c25763fd4dbea,1)])]), txOutDatumHash = Just }},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b241707d05dcabcb3d896ddd47467ce5437f7f5223562e9b7a4e68c725047150, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 5aba4f8ae399fe68312c90339de967aa98c57f6c35c905c47936863ebf6577b3, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential e431cf3d612906a6e017bc5de4faab3146fdeec419a967301d4082082ef7263c, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 58a6d0f846cb139b8bb03ed27cbd88a0b4ac5f54606a1518ba20ee7c3af1c5c8, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 8cbf28686420500cd5d1915b0e1de77778d225ef24ff9b5cc095fb33e907592b, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential a1d7ccf38e2be07ff759cd121c24d3106865cca2c5f85e8a7ee2864ea32ccd23, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 397a6ceb85b32cc247b3cf815f234942b75a95387e2f97562e289829fdab059f, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential d08bfa6ad3fe8bdc1e25beed51bc31b69c1e5dd3b50111c612888b6aaa491356, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 1c74efd016ab0a08546d1108c4d2dd144ec2b1c15726fd3cea634a9013961b74, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 0830503b1d996938edf1abd322220489ca9212516dabb4d87d73fcc960f85cab, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 5bac536f0fb820bd48acfe979491f9aa0270b148a81f4180b6b4f7d46066dba0, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 52671ada27514c352b8adbf5f9690e32035a5278156549a4484b807c7cecce51, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b833f95bc88b65a0a8a04d3cbbdd827ec77c52a8295cf0789062121f83a9d8e8, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b6269dcdb9a874bbabd74011935efe2bbb2bd6cd56d9855e34d4e86c962f42c4, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b8e294c54cc7a3ccaace33e336346b1debd37b375171d42be606c375e737989d, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential c98e9e2b1a5759a05c45112d9e48d6f8758a041c2dfdaaaf5771db69d14a5503, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 96fdffd5abcf31b4a2c4c4eacbf3aefdc0ef3ac529f1e26c074381a1f3be9aee, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 8ac26aab7c9d3f96d52f7a07391731bfdd9c09e0c75216ece69fa3d5a35a21ef, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 2ed4ccab6b100c631e8c4c35cb41bed7e4bc62223e3ddfd32e6631edbee3d684, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 4a077124eff748319b61b183c20fe15ae97335fdcda9c53f51fb7a452888ce8c, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential efcdd15b35674dcd601fd5cb7289c2d99a907598109330c6091bf196f8b2008f, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 0f5e99a2401ea995d4f5705903b2311f32c23b6f7a468140e4f7c8f863b2c0a7, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}}], txInfoOutputs = [TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 2938635e0019e4871e88be3e8e89d06e12fbe4e3604209a3b4f55b7d9b2e393e, addressStakingCredential = Nothing}, txOutValue = Value (Map [(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",23)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 31b1e0ad06a30dd22f4ad5545d5bfe35fd149d64978a22c87ecf04e0c55ea529, addressStakingCredential = Nothing}, txOutValue = Value (Map [(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",20)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 32dc4c7c66c03e532266eb45f8fff02e121fcafc74ebcf4fb41a0763133423d8, addressStakingCredential = Nothing}, txOutValue = Value (Map [(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",29)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 13d0c56bb73dac64888cdca66362e622f94054bf595feea8a59490f3f023bf46, addressStakingCredential = Nothing}, txOutValue = Value (Map [(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",4)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 646b746ab2aa538895e2ee7092020ee55fe5a0f610b8216de06a95af019d8928, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",20)])]), txOutDatumHash = Nothing}], txInfoFee = Value (Map [(,Map [("",2)])]), txInfoMint = Value (Map [(3132333132303939,Map [(0xa6028fb63fe556132c6f6664ea3b0608b3bba501d16c25763fd4dbea,-1)])]), txInfoDCert = [], txInfoWdrl = [], txInfoValidRange = Interval {ivFrom = LowerBound NegInf True, ivTo = UpperBound PosInf True}, txInfoSignatories = [8a30896c4fd5e79843e4ca1bd2cdbaa36f8c0bc3be7401214142019c], txInfoData = [], txInfoId = 0b123412341234}) +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Effect should pass +λ> +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Effect should pass +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Effect should pass +λ> generate (genTWECases InputsHaveOtherScriptInput) >>= (\gen -> return $ classifyTWE gen) +Transaction has script input that is not specified in datum +λ> generate (genTWECases InputsHaveOtherScriptInput) >>= (\gen -> return $ classifyTWE gen) +Transaction has script input that is not specified in datum +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Value (Map []) +Effect should pass +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Value (Map [])Value (Map [(0d2ad868534070304c80929ed48324c1fe7a7850f4978746ddf622b6bd701936,Map [("zeutwxkdzibgvznlwktzs",7)]),(2a5fa0239db444a038a54b659872a4500ae8b8f489ae1e0d6340465e3dc28c1c,Map [("cglgnuytjxlbdwsejhsyxkws",15)]),(34ecca11f206705689a3389fafb78aae50172c1934f919bb22589b5c2c57064d,Map [("hexmhjudqbsxrlncmuwghcsit",8)]),(54f6c40d7097a974e8ca9fa69ea014df23fe44ee0693e8b5b845628504f70cee,Map [("mvvnveearly",6)]),(650fc3c65a68b7e19e639fa890965c0123e7527b8a73d97067959c0dd064f990,Map [("bocymudpoicnetecztjlrmfwawnh",11)]),(688be1cce9a15b52fe25fa9250e3785260a1154d77923b111f9633f3a1b4d1d2,Map [("uhodrbgifxgus",6)]),(746658c7d31bdc14999389bd7ecd5c4f49ef25838c8dd032253460096f594785,Map [("astttrglcb",10)]),(77304182873f6db0b3cf5640959f25f606be455339f647a9d8aea90be1ac0b19,Map [("glsbddsgnjqubchvujsk",12)]),(7a9be4f3a7b6b58767ca7f9113d025906977f910476adcd6c12b3c20e7c26895,Map [("kwruzamolwy",13)]),(a7dbb2e86442b505ac3a89cf09a04ae01e97d6f2b9a2ad397ad0cd685e2aa524,Map [("sehpxfqwch",7)]),(bb431c2aff34b1c4cf3495e8489dcc27e3d1e30db44ddd204b67dbf6b26c86d3,Map [("tfrbiglzm",16)]),(f5e8f109b9c4f4c41a74cd5afec2b1e98caeb64046ba101fe127ba7116269609,Map [("kdpuxep",14)]),(fdf42bfc2069c6008656636e51de0cd6a5fddb0ddf2c822040497889dd7ede61,Map [("rnycluewxyzhqhlwgosycauaqjcpga",6)])]) +Effect should pass +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Value (Map [])Value (Map [(121c44a6147e3c5a144c66b5a4d17b2c068cd08ce53e94411fc67bb7b7d1c5aa,Map [("wuuirfmmceayeh",8)]),(1de3a87023f68132ca77757f0c878aa364d8fb8d585e4397b6625f0b5d821174,Map [("evg",10)]),(3459af0ee43f10a166e3901c2e46bd555a55c3b2f4c106c704df9cfe86f0a436,Map [("f",7)]),(47aa5af98961534c1d43c9c128467d988942f7b6254d1d717ef577713505d1fb,Map [("nnwgmiwur",12)]),(547e9884d98621b2cbd7f20bc2750840aa620c4e21725ab0f829e387fd91c237,Map [("dpifezxzchozzcbskjidbkkmbrdia",12)]),(8bb46f797e3918a92508aef0f7ba92d010bf98369dba4c4e6f2cf290ef539c46,Map [("vtursqavaohbm",2)]),(901c660dd877357deb86dc077a55b52fd26d40992e5c73d6d6bbbccb756c6499,Map [("hvppyoxvuchwklmkol",3)]),(a82e1e66148e951164ed36518043debab2a97d8d2956e04f142b9683c78add03,Map [("lpevqtvlbkpcwnzvxtmxudnxis",13)]),(b0941b47be36d3a66469b9d2a6f33c8f9f52a82ee18ec0992589ae8343e3d274,Map [("lwipwoeaszrlgevzxmu",11)]),(e42be7218f1581aa320b556abcfe8d6dd0bdeb39803048457ea10f5c88588580,Map [("yozctlprcsfpymitjflnbaszuvu",13)]),(ed05a3172f887a4aaa5141c3cd56e39db21319f4d6bdb335e84a052961e8dcd8,Map [("oodjfvwqkqhvzslsz",15)]),(ef7868d93b34c69879b9c2353e36f39e2ae12d600da239c4273287335cfd1443,Map [("ocnaoadtkiuhttcowdnno",3)])]) +Remainding Values do not return to input treasuries +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Remainding Values do not return to input treasuries +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Remainding Values do not return to input treasuries +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Remainding Values do not return to input treasuries +λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) +Remainding Values do not return to input treasuries +λ> import Test.Tasty +λ> defaultMain $ testProperty "hey" (monadicIO prop) +hey: Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesEffect should pass +FAIL + *** Failed! Falsified (after 5 tests): + Remainding Values do not return to input treasuries + Use --quickcheck-replay=299123 to reproduce. + +1 out of 1 tests failed (0.01s) +*** Exception: ExitFailure 1 +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Effect should passEffect should pass +hey: Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +OK (0.09s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.09s) +*** Exception: ExitSuccess +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +hey: Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesEffect should pass +FAIL (0.10s) + *** Failed! Falsified (after 98 tests): + Remainding Values do not return to input treasuries + Use --quickcheck-replay=869410 to reproduce. + +1 out of 1 tests failed (0.10s) +*** Exception: ExitFailure 1 +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +hey: Effect should passEffect should pass +Remainding Values do not return to input treasuriesEffect should pass +FAIL + *** Failed! Falsified (after 5 tests): + Remainding Values do not return to input treasuries + Use --quickcheck-replay=38157 to reproduce. + +1 out of 1 tests failed (0.01s) +*** Exception: ExitFailure 1 +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +hey: Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +OK (0.10s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.10s) +*** Exception: ExitSuccess +λ> +Effect shouhey: ld passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +OK (0.09s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.09s) +*** Exception: ExitSuccess +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +hey: Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +OK (0.10s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.10s) +*** Exception: ExitSuccess +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +hey: Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +OK (0.10s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.10s) +*** Exception: ExitSuccess +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +hey: Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +OK (0.10s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.10s) +*** Exception: ExitSuccess +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +hey: Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +OK (0.10s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.10s) +*** Exception: ExitSuccess +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +hey: Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +OK (0.09s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.09s) +*** Exception: ExitSuccess +λ> defaultMain $ testProperty "hey" (monadicIO prop) +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +hey: Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +OK (0.10s) + +++ OK, passed 100 tests. + +All 1 tests passed (0.10s) +*** Exception: ExitSuccess +λ> :{ +unknown command ':{go' +use :? for help. +λ> defaultMain . adjustOption _go $ testProperty "hey" (monadicIO prop) +Transachey: tion has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Effect should passEffect should pass +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction pays to effectTransaction pays to effect +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Transaction pays to effectTransaction pays to effect +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries +Effect should passEffect should pass +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction outputs do not match receiversTransaction outputs do not match receivers +Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum +Transaction pays to effectTransaction pays to effect +Interrupted. +λ> defaultMain . adjustOption _go $ testProperty "Generator <-> Classifier" (monadicIO prop) +hey: OK (5.52s) + +++ OK, passed 10000 tests. + +All 1 tests passed (5.52s) +*** Exception: ExitSuccess +λ> \ No newline at end of file diff --git a/agora-test/Spec/Effect/GovernorMutation.hs b/agora-spec/Spec/Effect/GovernorMutation.hs similarity index 100% rename from agora-test/Spec/Effect/GovernorMutation.hs rename to agora-spec/Spec/Effect/GovernorMutation.hs diff --git a/agora-test/Spec/Effect/TreasuryWithdrawal.hs b/agora-spec/Spec/Effect/TreasuryWithdrawal.hs similarity index 100% rename from agora-test/Spec/Effect/TreasuryWithdrawal.hs rename to agora-spec/Spec/Effect/TreasuryWithdrawal.hs diff --git a/agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ b/agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ new file mode 100644 index 0000000..a02b483 --- /dev/null +++ b/agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ @@ -0,0 +1,422 @@ +{- | +Module : Spec.Effect.TreasuryWithdrawalEffect +Maintainer : seungheon.ooh@gmail.com +Description: Sample based testing for Treasury Withdrawal Effect + +This module tests the Treasury Withdrawal Effect. +-} +module Spec.Effect.TreasuryWithdrawal (tests) where + +import Agora.Effect.TreasuryWithdrawal ( + TreasuryWithdrawalDatum (TreasuryWithdrawalDatum), + treasuryWithdrawalValidator, + PTreasuryWithdrawalDatum + ) +import Plutus.V1.Ledger.Api +import Plutarch.Builtin +import Plutus.V1.Ledger.Value qualified as Value +import Plutus.V1.Ledger.Interval qualified as Interval +import Plutarch.Api.V1 +import Sample.Effect.TreasuryWithdrawal +import Sample.Sample +import Test.Util (effectFailsWith, effectSucceedsWith) +import Agora.Utils +import Test.QuickCheck +import Test.QuickCheck.Monadic + +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.QuickCheck +import Test.Tasty.Plutarch.Property (classifiedProperty) + +import Data.Tagged +import Data.Universe + +import Control.Applicative + +type TWETestInput = (TreasuryWithdrawalDatum, TxInfo) +data TWETestCases + = PaysToEffect + | OutputsDoNotMatchReceivers + | InputsHaveOtherScriptInput + | RemaindersDoNotReturnToTreasuries + | EffectShouldPass + deriving stock (Eq) + +instance Show TWETestCases where + show = \case + PaysToEffect -> "Transaction pays to effect" + OutputsDoNotMatchReceivers -> "Transaction outputs do not match receivers" + InputsHaveOtherScriptInput -> "Transaction has script input that is not specified in datum" + RemaindersDoNotReturnToTreasuries -> "Remainding Values do not return to input treasuries" + EffectShouldPass -> "Effect should pass" + +instance Universe TWETestCases where + universe = + [ PaysToEffect + , OutputsDoNotMatchReceivers + , InputsHaveOtherScriptInput + , RemaindersDoNotReturnToTreasuries +-- , EffectShouldPass + ] + +instance Finite TWETestCases where + universeF = universe + cardinality = Tagged 5 + +-- TODO: Some unideal repeated patterns here +genTWECases :: TWETestCases -> Gen TWETestInput +genTWECases PaysToEffect = do + datum <- genTWEDatum + -- Would be nice to randomize number of outputs to effect + vals <- listOf1 genAnyValue + let toEffect = + (\val -> TxOut + { txOutAddress = Address (ScriptCredential $ validatorHash validator) Nothing + , txOutValue = val + , txOutDatumHash = Nothing + }) <$> vals + modify (i, o) = return (i, o <> toEffect) + txinfo <- txInfoFromTWEDatum modify datum + return (datum, txinfo) +genTWECases OutputsDoNotMatchReceivers = do + datum <- genTWEDatum + let modify (i, o) = do + -- unfortunately `sublistOf` sometimes returns same array. + -- So tail is used to make sure there is aleast one thing missing + output <- sublistOf $ tail o + return (i, output) + txinfo <- txInfoFromTWEDatum modify datum + return (datum, txinfo) +genTWECases InputsHaveOtherScriptInput = do + datum <- genTWEDatum + let modify (i, o) = do + d <- listOf1 $ liftA2 (,) genScriptCredential genAnyValue + + let unauthorizedScriptInputs = + (\(addr, val) -> + TxInInfo + (TxOutRef "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" 1) + TxOut + { txOutAddress = Address addr Nothing + , txOutValue = val + , txOutDatumHash = Nothing + }) <$> d + return (i <> unauthorizedScriptInputs, o) + txinfo <- txInfoFromTWEDatum modify datum + return (datum, txinfo) +genTWECases RemaindersDoNotReturnToTreasuries = do + -- suchThat here might be unideal, but it's what we've got... + -- Possible Fix, use random input amount for treasury inputs + -- so that it always have excess + datum <- genTWEDatum `suchThat` (\(TreasuryWithdrawalDatum r t) -> + let totalExpected = mconcat $ snd <$> r + ts = length t + in + totalExpected /= mconcat (replicate ts $ distributeValue ts totalExpected) + ) + let modify (i, o) = do + -- We'll drop all outputs directed to ScriptCredential + let treasuryDroppedOutput = + filter (\(addressCredential . txOutAddress -> x) -> case x of + PubKeyCredential _ -> True + ScriptCredential _ -> False + ) o + return (i, treasuryDroppedOutput) + txinfo <- txInfoFromTWEDatum modify datum + return (datum, txinfo) +genTWECases EffectShouldPass = do + datum <- genTWEDatum + txinfo <- txInfoFromTWEDatum return datum + return (datum, txinfo) + +classifyTWE :: TWETestInput -> TWETestCases +classifyTWE ((TreasuryWithdrawalDatum r t), info) + | paysToEffect = PaysToEffect + | outputsDoNotMatchReceivers = OutputsDoNotMatchReceivers + | inputsHaveOtherScriptInput = InputsHaveOtherScriptInput + | remaindersDoNotReturnToTreasuries = RemaindersDoNotReturnToTreasuries + | otherwise = EffectShouldPass + where + extractCredVal txout = (addressCredential (txOutAddress txout), txOutValue txout) + credentialValuePairs = extractCredVal <$> txInfoOutputs info + paysToEffect = elem (ScriptCredential $ validatorHash validator) $ fst . extractCredVal <$> (txInfoOutputs info) + outputsDoNotMatchReceivers = not $ and $ fmap (\x -> elem x credentialValuePairs) r + inputsHaveOtherScriptInput = or $ (\(fst . extractCredVal . txInInfoResolved -> x) -> + (not $ elem x t) && + x /= (ScriptCredential $ validatorHash validator) + ) <$> txInfoInputs info + + sumValueOfTreasury x = mconcat $ snd <$> (filter (\(c,_) -> elem c t) $ x) + treasuryInputSum = sumValueOfTreasury $ extractCredVal . txInInfoResolved <$> txInfoInputs info + treasuryOutputSum = sumValueOfTreasury credentialValuePairs + expected = Value.unionWith (-) treasuryInputSum (mconcat $ snd <$> r) + remaindersDoNotReturnToTreasuries = treasuryOutputSum /= expected + +shrinkTWE :: TWETestInput -> [TWETestInput] +shrinkTWE = const [] -- currently this should work... + +expectedTWE :: Term s (PBuiltinPair PTreasuryWithdrawalDatum PTxInfo :--> PMaybe PUnit) +expectedTWE = plam $ \_input -> pcon $ PNothing + +opaqueToUnit :: Term s (POpaque :--> PUnit) +opaqueToUnit = plam $ \_ -> pconstant () + +definitionTWE :: Term s (PBuiltinPair PTreasuryWithdrawalDatum PTxInfo :--> PUnit) +definitionTWE = plam $ \input -> unTermCont $ do + datum <- tclet $ pfstBuiltin # input + txinfo <- tclet $ psndBuiltin # input + + let scriptContext = + pcon $ PScriptContext $ + pdcons @"txInfo" # pdata txinfo + #$ pdcons @"purpose" # pdata (pconstant $ Spending (TxOutRef "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" 1)) + # pdnil + + pure $ opaqueToUnit #$ treasuryWithdrawalValidator currSymbol + # pforgetData (pdata datum) + # pforgetData (pdata (pconstant ())) + # scriptContext + +propertyTWE :: Property +propertyTWE = classifiedProperty genTWECases shrinkTWE expectedTWE classifyTWE definitionTWE + +{- | Generates "lawful" ScriptContext from given TreasuryWithdrawalDatum. +Other cases can use this ScriptContext to derive from and develop +a case specific contexts with generators. + +TODO: will this work okay with generators adding and removing +parts? I don't see particular reason it will not to, but will +that be a "good" generator? +-} +txInfoFromTWEDatum :: (([TxInInfo], [TxOut]) -> Gen ([TxInInfo], [TxOut])) -> TreasuryWithdrawalDatum -> Gen TxInfo +txInfoFromTWEDatum cb datum = do + (input, output) <- cb (expectedInput, expectedOutput) + return $ + TxInfo + { txInfoInputs = input + , txInfoOutputs = output + , txInfoFee = Value.singleton "" "" 2 + , txInfoMint = Value.singleton currSymbol validatorHashTN (-1) + , txInfoDCert = [] + , txInfoWdrl = [] + , txInfoValidRange = Interval.always + , txInfoSignatories = [signer] + , txInfoData = [] + , txInfoId = "0b123412341234" + } + where + (expectedInput, excessOutputs) = expectedTxInInfoFromTWEDatum datum + expectedOutput = expectedTxOutFromTWEDatum datum <> excessOutputs + +expectedTxOutFromTWEDatum :: TreasuryWithdrawalDatum -> [TxOut] +expectedTxOutFromTWEDatum (TreasuryWithdrawalDatum r _) = + f <$> r -- add outputs to treasuries, returning excess STs. + where + f (addr, val) = TxOut + { txOutAddress = Address addr Nothing + , txOutValue = val + , txOutDatumHash = Nothing + } + +{- | Generates expected inputs from given Datum +-} +expectedTxInInfoFromTWEDatum :: TreasuryWithdrawalDatum -> ([TxInInfo], [TxOut]) +expectedTxInInfoFromTWEDatum (TreasuryWithdrawalDatum r t) = + (inputGAT:((\addr -> TxInInfo + (TxOutRef "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" 1) + TxOut + { txOutAddress = Address addr Nothing + , txOutValue = treasuryInputValue + , txOutDatumHash = Nothing + }) + <$> t) + , [TxOut + { txOutAddress = Address (head t) Nothing + , txOutValue = extras + , txOutDatumHash = Nothing + }]) + where + totalValues = mconcat $ snd <$> r + treasuryInputValue = distributeValue (length t) totalValues + extras = Value.unionWith (-) (mconcat (replicate (length t) treasuryInputValue)) $ totalValues + +distributeValue :: Int -> Value -> Value +distributeValue n v = mconcat $ (\(cs, tn, (toInteger -> val)) -> Value.singleton cs tn val) <$> vals + where + vals = (\(cs, tn, (fromInteger -> val)) -> (cs, tn, val `divRound` n)) <$> Value.flattenValue v + divRound x y = case divMod x y of + (x, 0) -> x + (x, _) -> x + 1 + +genTWEDatum :: Gen TreasuryWithdrawalDatum +genTWEDatum = do + -- Make several random assetclasses to choose from + ac <- listOf1 genAssetClass + + -- Make several random users + users <- listOf1 genUserCredential + + -- Make several random treasuries + treas <- listOf1 genScriptCredential + + -- Make random amounts of values that transaction will have + values <- listOf1 $ elements ac >>= genValue + + let receiverList = zipWith (,) users values + pure $ TreasuryWithdrawalDatum receiverList treas + +prop :: PropertyM IO Bool +prop = forAllM (elements (universe :: [TWETestCases])) (\c -> run $ generate (genTWECases c) >>= (\gen -> return $ c == classifyTWE gen)) + +tests :: [TestTree] +tests = + [ testProperty "Generator <-> Classifier" (monadicIO prop) + , testProperty "effect" propertyTWE + , effectSucceedsWith + "test" + (treasuryWithdrawalValidator currSymbol) + datum1 + ( buildScriptContext + [ inputGAT + , inputCollateral 10 + , inputTreasury 1 (asset1 10) + ] + $ outputTreasury 1 (asset1 7) : + buildReceiversOutputFromDatum datum1 + ) + , testGroup + "effect" + [ effectSucceedsWith + "Simple" + (treasuryWithdrawalValidator currSymbol) + datum1 + ( buildScriptContext + [ inputGAT + , inputCollateral 10 + , inputTreasury 1 (asset1 10) + ] + $ outputTreasury 1 (asset1 7) : + buildReceiversOutputFromDatum datum1 + ) + , effectSucceedsWith + "Simple with multiple treasuries " + (treasuryWithdrawalValidator currSymbol) + datum1 + ( buildScriptContext + [ inputGAT + , inputCollateral 10 + , inputTreasury 1 (asset1 10) + , inputTreasury 2 (asset1 100) + , inputTreasury 3 (asset1 500) + ] + $ [ outputTreasury 1 (asset1 7) + , outputTreasury 2 (asset1 100) + , outputTreasury 3 (asset1 500) + ] + ++ buildReceiversOutputFromDatum datum1 + ) + , effectSucceedsWith + "Mixed Assets" + (treasuryWithdrawalValidator currSymbol) + datum2 + ( buildScriptContext + [ inputGAT + , inputCollateral 10 + , inputTreasury 1 (asset1 20) + , inputTreasury 2 (asset2 20) + ] + $ [ outputTreasury 1 (asset1 13) + , outputTreasury 2 (asset2 14) + ] + ++ buildReceiversOutputFromDatum datum2 + ) + , effectFailsWith + "Pay to uknown 3rd party" + (treasuryWithdrawalValidator currSymbol) + datum2 + ( buildScriptContext + [ inputGAT + , inputCollateral 10 + , inputTreasury 1 (asset1 20) + , inputTreasury 2 (asset2 20) + ] + $ [ outputUser 100 (asset1 2) + , outputTreasury 1 (asset1 11) + , outputTreasury 2 (asset2 14) + ] + ++ buildReceiversOutputFromDatum datum2 + ) + , effectFailsWith + "Missing receiver" + (treasuryWithdrawalValidator currSymbol) + datum2 + ( buildScriptContext + [ inputGAT + , inputCollateral 10 + , inputTreasury 1 (asset1 20) + , inputTreasury 2 (asset2 20) + ] + $ [ outputTreasury 1 (asset1 13) + , outputTreasury 2 (asset2 14) + ] + ++ drop 1 (buildReceiversOutputFromDatum datum2) + ) + , effectFailsWith + "Unauthorized treasury" + (treasuryWithdrawalValidator currSymbol) + datum3 + ( buildScriptContext + [ inputGAT + , inputCollateral 10 + , inputTreasury 999 (asset1 20) + ] + $ outputTreasury 999 (asset1 17) : + buildReceiversOutputFromDatum datum3 + ) + , effectFailsWith + "Prevent transactions besides the withdrawal" + (treasuryWithdrawalValidator currSymbol) + datum3 + ( buildScriptContext + [ inputGAT + , inputTreasury 1 (asset1 20) + , inputTreasury 999 (asset1 20) + , inputUser 99 (asset2 100) + ] + $ [ outputTreasury 1 (asset1 17) + , outputUser 100 (asset2 100) + ] + ++ buildReceiversOutputFromDatum datum3 + ) + ] + ] + where + asset1 = Value.singleton "abbc12" "OrangeBottle" + asset2 = Value.singleton "abbc12" "19721121" + datum1 = + TreasuryWithdrawalDatum + [ (head users, asset1 1) + , (users !! 1, asset1 1) + , (users !! 2, asset1 1) + ] + [ treasuries !! 1 + , treasuries !! 2 + , treasuries !! 3 + ] + datum2 = + TreasuryWithdrawalDatum + [ (head users, asset1 4 <> asset2 5) + , (users !! 1, asset1 2 <> asset2 1) + , (users !! 2, asset1 1) + ] + [ head treasuries + , treasuries !! 1 + , treasuries !! 2 + ] + datum3 = + TreasuryWithdrawalDatum + [ (head users, asset1 1) + , (users !! 1, asset1 1) + , (users !! 2, asset1 1) + ] + [treasuries !! 1] diff --git a/agora-test/Spec/Governor.hs b/agora-spec/Spec/Governor.hs similarity index 100% rename from agora-test/Spec/Governor.hs rename to agora-spec/Spec/Governor.hs diff --git a/agora-test/Spec/Model/MultiSig.hs b/agora-spec/Spec/Model/MultiSig.hs similarity index 100% rename from agora-test/Spec/Model/MultiSig.hs rename to agora-spec/Spec/Model/MultiSig.hs diff --git a/agora-test/Spec/Proposal.hs b/agora-spec/Spec/Proposal.hs similarity index 100% rename from agora-test/Spec/Proposal.hs rename to agora-spec/Spec/Proposal.hs diff --git a/agora-test/Spec/Spec.hs b/agora-spec/Spec/Spec.hs similarity index 100% rename from agora-test/Spec/Spec.hs rename to agora-spec/Spec/Spec.hs diff --git a/agora-test/Spec/Stake.hs b/agora-spec/Spec/Stake.hs similarity index 100% rename from agora-test/Spec/Stake.hs rename to agora-spec/Spec/Stake.hs diff --git a/agora-test/Spec/Treasury.hs b/agora-spec/Spec/Treasury.hs similarity index 100% rename from agora-test/Spec/Treasury.hs rename to agora-spec/Spec/Treasury.hs diff --git a/agora-test/Spec/Utils.hs b/agora-spec/Spec/Utils.hs similarity index 100% rename from agora-test/Spec/Utils.hs rename to agora-spec/Spec/Utils.hs diff --git a/agora-test/README.org b/agora-test/README.org deleted file mode 100644 index d7e7d2c..0000000 --- a/agora-test/README.org +++ /dev/null @@ -1,11 +0,0 @@ -#+Title: Agora Test -This folder is the test suite for Agora governance system. - -- =/Spec= contains different tests for different elements of Agora. -- =/Spec/Model= contain =apropos-tx= model for logical suite - generation and tests. -- =/Spec/Sample= contains primitive hand-made example values. -- =Util.hs= contains helper functions - -Currently, planning to introduce =plutarch-test= for unit tests, -benchmarks, and golden tests. diff --git a/agora.cabal b/agora.cabal index 8677046..1e1eb81 100644 --- a/agora.cabal +++ b/agora.cabal @@ -179,12 +179,9 @@ library agora-sample hs-source-dirs: agora-sample build-depends: agora-testlib -test-suite agora-test - import: lang, deps, test-deps - type: exitcode-stdio-1.0 - main-is: Spec.hs - hs-source-dirs: agora-test - other-modules: +library agora-spec + import: lang, deps, test-deps + exposed-modules: Spec.AuthorityToken Spec.Effect.GovernorMutation Spec.Effect.TreasuryWithdrawal @@ -196,10 +193,21 @@ test-suite agora-test Spec.Treasury Spec.Utils + hs-source-dirs: agora-spec build-depends: , agora-sample , agora-testlib +test-suite agora-test + import: lang, deps, test-deps + type: exitcode-stdio-1.0 + main-is: Spec.hs + hs-source-dirs: agora-test + build-depends: + , agora-sample + , agora-spec + , agora-testlib + benchmark agora-bench import: lang, deps hs-source-dirs: agora-bench From eda12644e56f761c5bec6ab29dee64ef5ab7c49d Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 14:48:03 -0500 Subject: [PATCH 04/15] emacs backups are sneaking into commits --- agora-spec/Spec/Effect/*agora* | 4299 ----------------- agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ | 422 -- 2 files changed, 4721 deletions(-) delete mode 100644 agora-spec/Spec/Effect/*agora* delete mode 100644 agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ diff --git a/agora-spec/Spec/Effect/*agora* b/agora-spec/Spec/Effect/*agora* deleted file mode 100644 index 8716896..0000000 --- a/agora-spec/Spec/Effect/*agora* +++ /dev/null @@ -1,4299 +0,0 @@ -Your wish is my IO (). -If I break, you can: - 1. Restart: M-x haskell-process-restart - 2. Configure logging: C-h v haskell-process-log (useful for debugging) - 3. General config: M-x customize-mode - 4. Hide these tips: C-h v haskell-process-show-debug-tips -λ> :set -Wwarn=missing-home-modules -λ> :r - -: warning: [-Wmissing-home-modules] - These modules are needed for compilation but not listed in your .cabal file's other-modules: - Spec.Sample.Effect.TreasuryWithdrawal Spec.Sample.Sample Spec.Util -[1 of 4] Compiling Spec.Sample.Effect.TreasuryWithdrawal ( agora-test/Spec/Sample/Effect/TreasuryWithdrawal.hs, interpreted ) -[2 of 4] Compiling Spec.Sample.Sample ( agora-test/Spec/Sample/Sample.hs, interpreted ) -[3 of 4] Compiling Spec.Util ( agora-test/Spec/Util.hs, interpreted ) -[4 of 4] Compiling Spec.Effect.TreasuryWithdrawal ( /home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs, interpreted ) - -/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:139:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] - Defined but not used: `totalOutput' - | -139 | totalOutput = mconcat $ snd <$> r - | ^^^^^^^^^^^ -Failed, three modules loaded. -λ> :r - -: warning: [-Wmissing-home-modules] - These modules are needed for compilation but not listed in your .cabal file's other-modules: - Spec.Sample.Effect.TreasuryWithdrawal Spec.Sample.Sample Spec.Util -[4 of 4] Compiling Spec.Effect.TreasuryWithdrawal ( /home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs, interpreted ) - -/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:139:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] - Defined but not used: `totalOutput' - | -139 | totalOutput = mconcat $ snd <$> r - | ^^^^^^^^^^^ - -/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:140:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] - Defined but not used: `treasuryInput' - | -140 | treasuryInput = mconcat $ snd <$> (filter (\(c,_) -> elem c t) $ extractCredVal . txInInfoResolved <$> txInfoInputs info) - | ^^^^^^^^^^^^^ - -/home/sho/Documents/agora/agora-test/Spec/Effect/TreasuryWithdrawal.hs:141:5: error: [-Wunused-local-binds, -Werror=unused-local-binds] - Defined but not used: `expected' - | -141 | expected = Value.unionWith (-) treasuryInput totalOutput - | ^^^^^^^^ -Failed, three modules loaded. -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) -(TreasuryWithdrawalDatum {receivers = [(PubKeyCredential 2938635e0019e4871e88be3e8e89d06e12fbe4e3604209a3b4f55b7d9b2e393e,Value (Map [(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",23)])])),(PubKeyCredential 31b1e0ad06a30dd22f4ad5545d5bfe35fd149d64978a22c87ecf04e0c55ea529,Value (Map [(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",20)])])),(PubKeyCredential 32dc4c7c66c03e532266eb45f8fff02e121fcafc74ebcf4fb41a0763133423d8,Value (Map [(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",29)])])),(PubKeyCredential 13d0c56bb73dac64888cdca66362e622f94054bf595feea8a59490f3f023bf46,Value (Map [(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",4)])])),(PubKeyCredential 646b746ab2aa538895e2ee7092020ee55fe5a0f610b8216de06a95af019d8928,Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",20)])]))], treasuries = [ScriptCredential b241707d05dcabcb3d896ddd47467ce5437f7f5223562e9b7a4e68c725047150,ScriptCredential 5aba4f8ae399fe68312c90339de967aa98c57f6c35c905c47936863ebf6577b3,ScriptCredential e431cf3d612906a6e017bc5de4faab3146fdeec419a967301d4082082ef7263c,ScriptCredential 58a6d0f846cb139b8bb03ed27cbd88a0b4ac5f54606a1518ba20ee7c3af1c5c8,ScriptCredential 8cbf28686420500cd5d1915b0e1de77778d225ef24ff9b5cc095fb33e907592b,ScriptCredential a1d7ccf38e2be07ff759cd121c24d3106865cca2c5f85e8a7ee2864ea32ccd23,ScriptCredential 397a6ceb85b32cc247b3cf815f234942b75a95387e2f97562e289829fdab059f,ScriptCredential d08bfa6ad3fe8bdc1e25beed51bc31b69c1e5dd3b50111c612888b6aaa491356,ScriptCredential 1c74efd016ab0a08546d1108c4d2dd144ec2b1c15726fd3cea634a9013961b74,ScriptCredential 0830503b1d996938edf1abd322220489ca9212516dabb4d87d73fcc960f85cab,ScriptCredential 5bac536f0fb820bd48acfe979491f9aa0270b148a81f4180b6b4f7d46066dba0,ScriptCredential 52671ada27514c352b8adbf5f9690e32035a5278156549a4484b807c7cecce51,ScriptCredential b833f95bc88b65a0a8a04d3cbbdd827ec77c52a8295cf0789062121f83a9d8e8,ScriptCredential b6269dcdb9a874bbabd74011935efe2bbb2bd6cd56d9855e34d4e86c962f42c4,ScriptCredential b8e294c54cc7a3ccaace33e336346b1debd37b375171d42be606c375e737989d,ScriptCredential c98e9e2b1a5759a05c45112d9e48d6f8758a041c2dfdaaaf5771db69d14a5503,ScriptCredential 96fdffd5abcf31b4a2c4c4eacbf3aefdc0ef3ac529f1e26c074381a1f3be9aee,ScriptCredential 8ac26aab7c9d3f96d52f7a07391731bfdd9c09e0c75216ece69fa3d5a35a21ef,ScriptCredential 2ed4ccab6b100c631e8c4c35cb41bed7e4bc62223e3ddfd32e6631edbee3d684,ScriptCredential 4a077124eff748319b61b183c20fe15ae97335fdcda9c53f51fb7a452888ce8c,ScriptCredential efcdd15b35674dcd601fd5cb7289c2d99a907598109330c6091bf196f8b2008f,ScriptCredential 0f5e99a2401ea995d4f5705903b2311f32c23b6f7a468140e4f7c8f863b2c0a7]},TxInfo {txInfoInputs = [TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential a6028fb63fe556132c6f6664ea3b0608b3bba501d16c25763fd4dbea, addressStakingCredential = Nothing}, txOutValue = Value (Map [(3132333132303939,Map [(0xa6028fb63fe556132c6f6664ea3b0608b3bba501d16c25763fd4dbea,1)])]), txOutDatumHash = Just }},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b241707d05dcabcb3d896ddd47467ce5437f7f5223562e9b7a4e68c725047150, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 5aba4f8ae399fe68312c90339de967aa98c57f6c35c905c47936863ebf6577b3, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential e431cf3d612906a6e017bc5de4faab3146fdeec419a967301d4082082ef7263c, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 58a6d0f846cb139b8bb03ed27cbd88a0b4ac5f54606a1518ba20ee7c3af1c5c8, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 8cbf28686420500cd5d1915b0e1de77778d225ef24ff9b5cc095fb33e907592b, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential a1d7ccf38e2be07ff759cd121c24d3106865cca2c5f85e8a7ee2864ea32ccd23, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 397a6ceb85b32cc247b3cf815f234942b75a95387e2f97562e289829fdab059f, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential d08bfa6ad3fe8bdc1e25beed51bc31b69c1e5dd3b50111c612888b6aaa491356, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 1c74efd016ab0a08546d1108c4d2dd144ec2b1c15726fd3cea634a9013961b74, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 0830503b1d996938edf1abd322220489ca9212516dabb4d87d73fcc960f85cab, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 5bac536f0fb820bd48acfe979491f9aa0270b148a81f4180b6b4f7d46066dba0, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 52671ada27514c352b8adbf5f9690e32035a5278156549a4484b807c7cecce51, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b833f95bc88b65a0a8a04d3cbbdd827ec77c52a8295cf0789062121f83a9d8e8, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b6269dcdb9a874bbabd74011935efe2bbb2bd6cd56d9855e34d4e86c962f42c4, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential b8e294c54cc7a3ccaace33e336346b1debd37b375171d42be606c375e737989d, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential c98e9e2b1a5759a05c45112d9e48d6f8758a041c2dfdaaaf5771db69d14a5503, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 96fdffd5abcf31b4a2c4c4eacbf3aefdc0ef3ac529f1e26c074381a1f3be9aee, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 8ac26aab7c9d3f96d52f7a07391731bfdd9c09e0c75216ece69fa3d5a35a21ef, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 2ed4ccab6b100c631e8c4c35cb41bed7e4bc62223e3ddfd32e6631edbee3d684, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 4a077124eff748319b61b183c20fe15ae97335fdcda9c53f51fb7a452888ce8c, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential efcdd15b35674dcd601fd5cb7289c2d99a907598109330c6091bf196f8b2008f, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}},TxInInfo {txInInfoOutRef = TxOutRef {txOutRefId = 0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be, txOutRefIdx = 1}, txInInfoResolved = TxOut {txOutAddress = Address {addressCredential = ScriptCredential 0f5e99a2401ea995d4f5705903b2311f32c23b6f7a468140e4f7c8f863b2c0a7, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",1)]),(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",1)]),(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",2)]),(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",2)]),(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",1)])]), txOutDatumHash = Nothing}}], txInfoOutputs = [TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 2938635e0019e4871e88be3e8e89d06e12fbe4e3604209a3b4f55b7d9b2e393e, addressStakingCredential = Nothing}, txOutValue = Value (Map [(7395f0cd7ff79d334ff46e0410d2feb982828c93e79669b577774d272cfc339f,Map [("tgacmdzys",23)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 31b1e0ad06a30dd22f4ad5545d5bfe35fd149d64978a22c87ecf04e0c55ea529, addressStakingCredential = Nothing}, txOutValue = Value (Map [(a9f3045d19dc7a166853a696717be8070db7daee475f6fa9bd5785514aefbb57,Map [("uakqkketdlijgyamfelblu",20)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 32dc4c7c66c03e532266eb45f8fff02e121fcafc74ebcf4fb41a0763133423d8, addressStakingCredential = Nothing}, txOutValue = Value (Map [(a73e791bd9734ba428df02423b43d6d55beba0339abccdb1b0b8789adc3204e1,Map [("gtratlelzbcbhhsifnstjdbaiownoa",29)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 13d0c56bb73dac64888cdca66362e622f94054bf595feea8a59490f3f023bf46, addressStakingCredential = Nothing}, txOutValue = Value (Map [(49a0b24cb2aaa0467d96848f484265024f2bf2a8c05e8bce2d62b1d3127f6343,Map [("oqfizchds",4)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = PubKeyCredential 646b746ab2aa538895e2ee7092020ee55fe5a0f610b8216de06a95af019d8928, addressStakingCredential = Nothing}, txOutValue = Value (Map [(2ea91ec7ef21a6ec63cd42e81c87fc2f3793897f56bb6b14bc9a7f731954a674,Map [("gyep",20)])]), txOutDatumHash = Nothing}], txInfoFee = Value (Map [(,Map [("",2)])]), txInfoMint = Value (Map [(3132333132303939,Map [(0xa6028fb63fe556132c6f6664ea3b0608b3bba501d16c25763fd4dbea,-1)])]), txInfoDCert = [], txInfoWdrl = [], txInfoValidRange = Interval {ivFrom = LowerBound NegInf True, ivTo = UpperBound PosInf True}, txInfoSignatories = [8a30896c4fd5e79843e4ca1bd2cdbaa36f8c0bc3be7401214142019c], txInfoData = [], txInfoId = 0b123412341234}) -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Effect should pass -λ> -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Effect should pass -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Effect should pass -λ> generate (genTWECases InputsHaveOtherScriptInput) >>= (\gen -> return $ classifyTWE gen) -Transaction has script input that is not specified in datum -λ> generate (genTWECases InputsHaveOtherScriptInput) >>= (\gen -> return $ classifyTWE gen) -Transaction has script input that is not specified in datum -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Value (Map []) -Effect should pass -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Value (Map [])Value (Map [(0d2ad868534070304c80929ed48324c1fe7a7850f4978746ddf622b6bd701936,Map [("zeutwxkdzibgvznlwktzs",7)]),(2a5fa0239db444a038a54b659872a4500ae8b8f489ae1e0d6340465e3dc28c1c,Map [("cglgnuytjxlbdwsejhsyxkws",15)]),(34ecca11f206705689a3389fafb78aae50172c1934f919bb22589b5c2c57064d,Map [("hexmhjudqbsxrlncmuwghcsit",8)]),(54f6c40d7097a974e8ca9fa69ea014df23fe44ee0693e8b5b845628504f70cee,Map [("mvvnveearly",6)]),(650fc3c65a68b7e19e639fa890965c0123e7527b8a73d97067959c0dd064f990,Map [("bocymudpoicnetecztjlrmfwawnh",11)]),(688be1cce9a15b52fe25fa9250e3785260a1154d77923b111f9633f3a1b4d1d2,Map [("uhodrbgifxgus",6)]),(746658c7d31bdc14999389bd7ecd5c4f49ef25838c8dd032253460096f594785,Map [("astttrglcb",10)]),(77304182873f6db0b3cf5640959f25f606be455339f647a9d8aea90be1ac0b19,Map [("glsbddsgnjqubchvujsk",12)]),(7a9be4f3a7b6b58767ca7f9113d025906977f910476adcd6c12b3c20e7c26895,Map [("kwruzamolwy",13)]),(a7dbb2e86442b505ac3a89cf09a04ae01e97d6f2b9a2ad397ad0cd685e2aa524,Map [("sehpxfqwch",7)]),(bb431c2aff34b1c4cf3495e8489dcc27e3d1e30db44ddd204b67dbf6b26c86d3,Map [("tfrbiglzm",16)]),(f5e8f109b9c4f4c41a74cd5afec2b1e98caeb64046ba101fe127ba7116269609,Map [("kdpuxep",14)]),(fdf42bfc2069c6008656636e51de0cd6a5fddb0ddf2c822040497889dd7ede61,Map [("rnycluewxyzhqhlwgosycauaqjcpga",6)])]) -Effect should pass -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Value (Map [])Value (Map [(121c44a6147e3c5a144c66b5a4d17b2c068cd08ce53e94411fc67bb7b7d1c5aa,Map [("wuuirfmmceayeh",8)]),(1de3a87023f68132ca77757f0c878aa364d8fb8d585e4397b6625f0b5d821174,Map [("evg",10)]),(3459af0ee43f10a166e3901c2e46bd555a55c3b2f4c106c704df9cfe86f0a436,Map [("f",7)]),(47aa5af98961534c1d43c9c128467d988942f7b6254d1d717ef577713505d1fb,Map [("nnwgmiwur",12)]),(547e9884d98621b2cbd7f20bc2750840aa620c4e21725ab0f829e387fd91c237,Map [("dpifezxzchozzcbskjidbkkmbrdia",12)]),(8bb46f797e3918a92508aef0f7ba92d010bf98369dba4c4e6f2cf290ef539c46,Map [("vtursqavaohbm",2)]),(901c660dd877357deb86dc077a55b52fd26d40992e5c73d6d6bbbccb756c6499,Map [("hvppyoxvuchwklmkol",3)]),(a82e1e66148e951164ed36518043debab2a97d8d2956e04f142b9683c78add03,Map [("lpevqtvlbkpcwnzvxtmxudnxis",13)]),(b0941b47be36d3a66469b9d2a6f33c8f9f52a82ee18ec0992589ae8343e3d274,Map [("lwipwoeaszrlgevzxmu",11)]),(e42be7218f1581aa320b556abcfe8d6dd0bdeb39803048457ea10f5c88588580,Map [("yozctlprcsfpymitjflnbaszuvu",13)]),(ed05a3172f887a4aaa5141c3cd56e39db21319f4d6bdb335e84a052961e8dcd8,Map [("oodjfvwqkqhvzslsz",15)]),(ef7868d93b34c69879b9c2353e36f39e2ae12d600da239c4273287335cfd1443,Map [("ocnaoadtkiuhttcowdnno",3)])]) -Remainding Values do not return to input treasuries -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Remainding Values do not return to input treasuries -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Remainding Values do not return to input treasuries -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Remainding Values do not return to input treasuries -λ> generate (genTWECases RemaindersDoNotReturnToTreasuries) >>= (\gen -> return $ classifyTWE gen) -Remainding Values do not return to input treasuries -λ> import Test.Tasty -λ> defaultMain $ testProperty "hey" (monadicIO prop) -hey: Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesEffect should pass -FAIL - *** Failed! Falsified (after 5 tests): - Remainding Values do not return to input treasuries - Use --quickcheck-replay=299123 to reproduce. - -1 out of 1 tests failed (0.01s) -*** Exception: ExitFailure 1 -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Effect should passEffect should pass -hey: Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -OK (0.09s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.09s) -*** Exception: ExitSuccess -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -hey: Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesEffect should pass -FAIL (0.10s) - *** Failed! Falsified (after 98 tests): - Remainding Values do not return to input treasuries - Use --quickcheck-replay=869410 to reproduce. - -1 out of 1 tests failed (0.10s) -*** Exception: ExitFailure 1 -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -hey: Effect should passEffect should pass -Remainding Values do not return to input treasuriesEffect should pass -FAIL - *** Failed! Falsified (after 5 tests): - Remainding Values do not return to input treasuries - Use --quickcheck-replay=38157 to reproduce. - -1 out of 1 tests failed (0.01s) -*** Exception: ExitFailure 1 -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -hey: Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -OK (0.10s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.10s) -*** Exception: ExitSuccess -λ> -Effect shouhey: ld passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -OK (0.09s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.09s) -*** Exception: ExitSuccess -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -hey: Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -OK (0.10s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.10s) -*** Exception: ExitSuccess -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -hey: Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -OK (0.10s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.10s) -*** Exception: ExitSuccess -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -hey: Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -OK (0.10s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.10s) -*** Exception: ExitSuccess -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -hey: Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -OK (0.10s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.10s) -*** Exception: ExitSuccess -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -hey: Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -OK (0.09s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.09s) -*** Exception: ExitSuccess -λ> defaultMain $ testProperty "hey" (monadicIO prop) -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -hey: Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -OK (0.10s) - +++ OK, passed 100 tests. - -All 1 tests passed (0.10s) -*** Exception: ExitSuccess -λ> :{ -unknown command ':{go' -use :? for help. -λ> defaultMain . adjustOption _go $ testProperty "hey" (monadicIO prop) -Transachey: tion has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Effect should passEffect should pass -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction pays to effectTransaction pays to effect -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Transaction pays to effectTransaction pays to effect -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Remainding Values do not return to input treasuriesRemainding Values do not return to input treasuries -Effect should passEffect should pass -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction outputs do not match receiversTransaction outputs do not match receivers -Transaction has script input that is not specified in datumTransaction has script input that is not specified in datum -Transaction pays to effectTransaction pays to effect -Interrupted. -λ> defaultMain . adjustOption _go $ testProperty "Generator <-> Classifier" (monadicIO prop) -hey: OK (5.52s) - +++ OK, passed 10000 tests. - -All 1 tests passed (5.52s) -*** Exception: ExitSuccess -λ> \ No newline at end of file diff --git a/agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ b/agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ deleted file mode 100644 index a02b483..0000000 --- a/agora-spec/Spec/Effect/TreasuryWithdrawal.hs~ +++ /dev/null @@ -1,422 +0,0 @@ -{- | -Module : Spec.Effect.TreasuryWithdrawalEffect -Maintainer : seungheon.ooh@gmail.com -Description: Sample based testing for Treasury Withdrawal Effect - -This module tests the Treasury Withdrawal Effect. --} -module Spec.Effect.TreasuryWithdrawal (tests) where - -import Agora.Effect.TreasuryWithdrawal ( - TreasuryWithdrawalDatum (TreasuryWithdrawalDatum), - treasuryWithdrawalValidator, - PTreasuryWithdrawalDatum - ) -import Plutus.V1.Ledger.Api -import Plutarch.Builtin -import Plutus.V1.Ledger.Value qualified as Value -import Plutus.V1.Ledger.Interval qualified as Interval -import Plutarch.Api.V1 -import Sample.Effect.TreasuryWithdrawal -import Sample.Sample -import Test.Util (effectFailsWith, effectSucceedsWith) -import Agora.Utils -import Test.QuickCheck -import Test.QuickCheck.Monadic - -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck -import Test.Tasty.Plutarch.Property (classifiedProperty) - -import Data.Tagged -import Data.Universe - -import Control.Applicative - -type TWETestInput = (TreasuryWithdrawalDatum, TxInfo) -data TWETestCases - = PaysToEffect - | OutputsDoNotMatchReceivers - | InputsHaveOtherScriptInput - | RemaindersDoNotReturnToTreasuries - | EffectShouldPass - deriving stock (Eq) - -instance Show TWETestCases where - show = \case - PaysToEffect -> "Transaction pays to effect" - OutputsDoNotMatchReceivers -> "Transaction outputs do not match receivers" - InputsHaveOtherScriptInput -> "Transaction has script input that is not specified in datum" - RemaindersDoNotReturnToTreasuries -> "Remainding Values do not return to input treasuries" - EffectShouldPass -> "Effect should pass" - -instance Universe TWETestCases where - universe = - [ PaysToEffect - , OutputsDoNotMatchReceivers - , InputsHaveOtherScriptInput - , RemaindersDoNotReturnToTreasuries --- , EffectShouldPass - ] - -instance Finite TWETestCases where - universeF = universe - cardinality = Tagged 5 - --- TODO: Some unideal repeated patterns here -genTWECases :: TWETestCases -> Gen TWETestInput -genTWECases PaysToEffect = do - datum <- genTWEDatum - -- Would be nice to randomize number of outputs to effect - vals <- listOf1 genAnyValue - let toEffect = - (\val -> TxOut - { txOutAddress = Address (ScriptCredential $ validatorHash validator) Nothing - , txOutValue = val - , txOutDatumHash = Nothing - }) <$> vals - modify (i, o) = return (i, o <> toEffect) - txinfo <- txInfoFromTWEDatum modify datum - return (datum, txinfo) -genTWECases OutputsDoNotMatchReceivers = do - datum <- genTWEDatum - let modify (i, o) = do - -- unfortunately `sublistOf` sometimes returns same array. - -- So tail is used to make sure there is aleast one thing missing - output <- sublistOf $ tail o - return (i, output) - txinfo <- txInfoFromTWEDatum modify datum - return (datum, txinfo) -genTWECases InputsHaveOtherScriptInput = do - datum <- genTWEDatum - let modify (i, o) = do - d <- listOf1 $ liftA2 (,) genScriptCredential genAnyValue - - let unauthorizedScriptInputs = - (\(addr, val) -> - TxInInfo - (TxOutRef "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" 1) - TxOut - { txOutAddress = Address addr Nothing - , txOutValue = val - , txOutDatumHash = Nothing - }) <$> d - return (i <> unauthorizedScriptInputs, o) - txinfo <- txInfoFromTWEDatum modify datum - return (datum, txinfo) -genTWECases RemaindersDoNotReturnToTreasuries = do - -- suchThat here might be unideal, but it's what we've got... - -- Possible Fix, use random input amount for treasury inputs - -- so that it always have excess - datum <- genTWEDatum `suchThat` (\(TreasuryWithdrawalDatum r t) -> - let totalExpected = mconcat $ snd <$> r - ts = length t - in - totalExpected /= mconcat (replicate ts $ distributeValue ts totalExpected) - ) - let modify (i, o) = do - -- We'll drop all outputs directed to ScriptCredential - let treasuryDroppedOutput = - filter (\(addressCredential . txOutAddress -> x) -> case x of - PubKeyCredential _ -> True - ScriptCredential _ -> False - ) o - return (i, treasuryDroppedOutput) - txinfo <- txInfoFromTWEDatum modify datum - return (datum, txinfo) -genTWECases EffectShouldPass = do - datum <- genTWEDatum - txinfo <- txInfoFromTWEDatum return datum - return (datum, txinfo) - -classifyTWE :: TWETestInput -> TWETestCases -classifyTWE ((TreasuryWithdrawalDatum r t), info) - | paysToEffect = PaysToEffect - | outputsDoNotMatchReceivers = OutputsDoNotMatchReceivers - | inputsHaveOtherScriptInput = InputsHaveOtherScriptInput - | remaindersDoNotReturnToTreasuries = RemaindersDoNotReturnToTreasuries - | otherwise = EffectShouldPass - where - extractCredVal txout = (addressCredential (txOutAddress txout), txOutValue txout) - credentialValuePairs = extractCredVal <$> txInfoOutputs info - paysToEffect = elem (ScriptCredential $ validatorHash validator) $ fst . extractCredVal <$> (txInfoOutputs info) - outputsDoNotMatchReceivers = not $ and $ fmap (\x -> elem x credentialValuePairs) r - inputsHaveOtherScriptInput = or $ (\(fst . extractCredVal . txInInfoResolved -> x) -> - (not $ elem x t) && - x /= (ScriptCredential $ validatorHash validator) - ) <$> txInfoInputs info - - sumValueOfTreasury x = mconcat $ snd <$> (filter (\(c,_) -> elem c t) $ x) - treasuryInputSum = sumValueOfTreasury $ extractCredVal . txInInfoResolved <$> txInfoInputs info - treasuryOutputSum = sumValueOfTreasury credentialValuePairs - expected = Value.unionWith (-) treasuryInputSum (mconcat $ snd <$> r) - remaindersDoNotReturnToTreasuries = treasuryOutputSum /= expected - -shrinkTWE :: TWETestInput -> [TWETestInput] -shrinkTWE = const [] -- currently this should work... - -expectedTWE :: Term s (PBuiltinPair PTreasuryWithdrawalDatum PTxInfo :--> PMaybe PUnit) -expectedTWE = plam $ \_input -> pcon $ PNothing - -opaqueToUnit :: Term s (POpaque :--> PUnit) -opaqueToUnit = plam $ \_ -> pconstant () - -definitionTWE :: Term s (PBuiltinPair PTreasuryWithdrawalDatum PTxInfo :--> PUnit) -definitionTWE = plam $ \input -> unTermCont $ do - datum <- tclet $ pfstBuiltin # input - txinfo <- tclet $ psndBuiltin # input - - let scriptContext = - pcon $ PScriptContext $ - pdcons @"txInfo" # pdata txinfo - #$ pdcons @"purpose" # pdata (pconstant $ Spending (TxOutRef "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" 1)) - # pdnil - - pure $ opaqueToUnit #$ treasuryWithdrawalValidator currSymbol - # pforgetData (pdata datum) - # pforgetData (pdata (pconstant ())) - # scriptContext - -propertyTWE :: Property -propertyTWE = classifiedProperty genTWECases shrinkTWE expectedTWE classifyTWE definitionTWE - -{- | Generates "lawful" ScriptContext from given TreasuryWithdrawalDatum. -Other cases can use this ScriptContext to derive from and develop -a case specific contexts with generators. - -TODO: will this work okay with generators adding and removing -parts? I don't see particular reason it will not to, but will -that be a "good" generator? --} -txInfoFromTWEDatum :: (([TxInInfo], [TxOut]) -> Gen ([TxInInfo], [TxOut])) -> TreasuryWithdrawalDatum -> Gen TxInfo -txInfoFromTWEDatum cb datum = do - (input, output) <- cb (expectedInput, expectedOutput) - return $ - TxInfo - { txInfoInputs = input - , txInfoOutputs = output - , txInfoFee = Value.singleton "" "" 2 - , txInfoMint = Value.singleton currSymbol validatorHashTN (-1) - , txInfoDCert = [] - , txInfoWdrl = [] - , txInfoValidRange = Interval.always - , txInfoSignatories = [signer] - , txInfoData = [] - , txInfoId = "0b123412341234" - } - where - (expectedInput, excessOutputs) = expectedTxInInfoFromTWEDatum datum - expectedOutput = expectedTxOutFromTWEDatum datum <> excessOutputs - -expectedTxOutFromTWEDatum :: TreasuryWithdrawalDatum -> [TxOut] -expectedTxOutFromTWEDatum (TreasuryWithdrawalDatum r _) = - f <$> r -- add outputs to treasuries, returning excess STs. - where - f (addr, val) = TxOut - { txOutAddress = Address addr Nothing - , txOutValue = val - , txOutDatumHash = Nothing - } - -{- | Generates expected inputs from given Datum --} -expectedTxInInfoFromTWEDatum :: TreasuryWithdrawalDatum -> ([TxInInfo], [TxOut]) -expectedTxInInfoFromTWEDatum (TreasuryWithdrawalDatum r t) = - (inputGAT:((\addr -> TxInInfo - (TxOutRef "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" 1) - TxOut - { txOutAddress = Address addr Nothing - , txOutValue = treasuryInputValue - , txOutDatumHash = Nothing - }) - <$> t) - , [TxOut - { txOutAddress = Address (head t) Nothing - , txOutValue = extras - , txOutDatumHash = Nothing - }]) - where - totalValues = mconcat $ snd <$> r - treasuryInputValue = distributeValue (length t) totalValues - extras = Value.unionWith (-) (mconcat (replicate (length t) treasuryInputValue)) $ totalValues - -distributeValue :: Int -> Value -> Value -distributeValue n v = mconcat $ (\(cs, tn, (toInteger -> val)) -> Value.singleton cs tn val) <$> vals - where - vals = (\(cs, tn, (fromInteger -> val)) -> (cs, tn, val `divRound` n)) <$> Value.flattenValue v - divRound x y = case divMod x y of - (x, 0) -> x - (x, _) -> x + 1 - -genTWEDatum :: Gen TreasuryWithdrawalDatum -genTWEDatum = do - -- Make several random assetclasses to choose from - ac <- listOf1 genAssetClass - - -- Make several random users - users <- listOf1 genUserCredential - - -- Make several random treasuries - treas <- listOf1 genScriptCredential - - -- Make random amounts of values that transaction will have - values <- listOf1 $ elements ac >>= genValue - - let receiverList = zipWith (,) users values - pure $ TreasuryWithdrawalDatum receiverList treas - -prop :: PropertyM IO Bool -prop = forAllM (elements (universe :: [TWETestCases])) (\c -> run $ generate (genTWECases c) >>= (\gen -> return $ c == classifyTWE gen)) - -tests :: [TestTree] -tests = - [ testProperty "Generator <-> Classifier" (monadicIO prop) - , testProperty "effect" propertyTWE - , effectSucceedsWith - "test" - (treasuryWithdrawalValidator currSymbol) - datum1 - ( buildScriptContext - [ inputGAT - , inputCollateral 10 - , inputTreasury 1 (asset1 10) - ] - $ outputTreasury 1 (asset1 7) : - buildReceiversOutputFromDatum datum1 - ) - , testGroup - "effect" - [ effectSucceedsWith - "Simple" - (treasuryWithdrawalValidator currSymbol) - datum1 - ( buildScriptContext - [ inputGAT - , inputCollateral 10 - , inputTreasury 1 (asset1 10) - ] - $ outputTreasury 1 (asset1 7) : - buildReceiversOutputFromDatum datum1 - ) - , effectSucceedsWith - "Simple with multiple treasuries " - (treasuryWithdrawalValidator currSymbol) - datum1 - ( buildScriptContext - [ inputGAT - , inputCollateral 10 - , inputTreasury 1 (asset1 10) - , inputTreasury 2 (asset1 100) - , inputTreasury 3 (asset1 500) - ] - $ [ outputTreasury 1 (asset1 7) - , outputTreasury 2 (asset1 100) - , outputTreasury 3 (asset1 500) - ] - ++ buildReceiversOutputFromDatum datum1 - ) - , effectSucceedsWith - "Mixed Assets" - (treasuryWithdrawalValidator currSymbol) - datum2 - ( buildScriptContext - [ inputGAT - , inputCollateral 10 - , inputTreasury 1 (asset1 20) - , inputTreasury 2 (asset2 20) - ] - $ [ outputTreasury 1 (asset1 13) - , outputTreasury 2 (asset2 14) - ] - ++ buildReceiversOutputFromDatum datum2 - ) - , effectFailsWith - "Pay to uknown 3rd party" - (treasuryWithdrawalValidator currSymbol) - datum2 - ( buildScriptContext - [ inputGAT - , inputCollateral 10 - , inputTreasury 1 (asset1 20) - , inputTreasury 2 (asset2 20) - ] - $ [ outputUser 100 (asset1 2) - , outputTreasury 1 (asset1 11) - , outputTreasury 2 (asset2 14) - ] - ++ buildReceiversOutputFromDatum datum2 - ) - , effectFailsWith - "Missing receiver" - (treasuryWithdrawalValidator currSymbol) - datum2 - ( buildScriptContext - [ inputGAT - , inputCollateral 10 - , inputTreasury 1 (asset1 20) - , inputTreasury 2 (asset2 20) - ] - $ [ outputTreasury 1 (asset1 13) - , outputTreasury 2 (asset2 14) - ] - ++ drop 1 (buildReceiversOutputFromDatum datum2) - ) - , effectFailsWith - "Unauthorized treasury" - (treasuryWithdrawalValidator currSymbol) - datum3 - ( buildScriptContext - [ inputGAT - , inputCollateral 10 - , inputTreasury 999 (asset1 20) - ] - $ outputTreasury 999 (asset1 17) : - buildReceiversOutputFromDatum datum3 - ) - , effectFailsWith - "Prevent transactions besides the withdrawal" - (treasuryWithdrawalValidator currSymbol) - datum3 - ( buildScriptContext - [ inputGAT - , inputTreasury 1 (asset1 20) - , inputTreasury 999 (asset1 20) - , inputUser 99 (asset2 100) - ] - $ [ outputTreasury 1 (asset1 17) - , outputUser 100 (asset2 100) - ] - ++ buildReceiversOutputFromDatum datum3 - ) - ] - ] - where - asset1 = Value.singleton "abbc12" "OrangeBottle" - asset2 = Value.singleton "abbc12" "19721121" - datum1 = - TreasuryWithdrawalDatum - [ (head users, asset1 1) - , (users !! 1, asset1 1) - , (users !! 2, asset1 1) - ] - [ treasuries !! 1 - , treasuries !! 2 - , treasuries !! 3 - ] - datum2 = - TreasuryWithdrawalDatum - [ (head users, asset1 4 <> asset2 5) - , (users !! 1, asset1 2 <> asset2 1) - , (users !! 2, asset1 1) - ] - [ head treasuries - , treasuries !! 1 - , treasuries !! 2 - ] - datum3 = - TreasuryWithdrawalDatum - [ (head users, asset1 1) - , (users !! 1, asset1 1) - , (users !! 2, asset1 1) - ] - [treasuries !! 1] From 5c438f006234af8c377e00cf05d5179ba7d6eefa Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 15:20:09 -0500 Subject: [PATCH 05/15] benchmarking --- agora-bench/Bench.hs | 61 ++++++++++++++++++++++++++++++++------------ agora-bench/Main.hs | 59 ++++++++++++++++++------------------------ agora.cabal | 1 + 3 files changed, 70 insertions(+), 51 deletions(-) diff --git a/agora-bench/Bench.hs b/agora-bench/Bench.hs index 0539f24..f6dc480 100644 --- a/agora-bench/Bench.hs +++ b/agora-bench/Bench.hs @@ -1,12 +1,24 @@ -module Bench (Benchmark (..), benchmarkSize) where +module Bench (Benchmark (..), benchmarkScript, specificationTreeToBenchmarks) where import Codec.Serialise (serialise) import Data.ByteString.Lazy qualified as LBS import Data.ByteString.Short qualified as SBS -import Data.Set (Set) -import Data.Set qualified as Set -import Data.Text (Text) -import Plutus.V1.Ledger.Scripts qualified as Plutus +import Data.List (intercalate) +import Data.Maybe (fromJust) +import Data.Text (Text, pack) +import Plutus.V1.Ledger.Api ( + ExBudget (ExBudget), + ExCPU, + ExMemory, + Script, + ) +import Plutus.V1.Ledger.Api qualified as Plutus + +import Spec.Spec ( + Specification (Specification), + SpecificationExpectation (Success), + SpecificationTree (..), + ) -------------------------------------------------------------------------------- @@ -14,20 +26,35 @@ import Plutus.V1.Ledger.Scripts qualified as Plutus data Benchmark = Benchmark { name :: Text -- ^ Human readable name describing script. - , size :: Int + , bCPUBudget :: ExCPU + -- ^ The on-chain execution cost of a script. + , bMemoryBudget :: ExMemory + -- ^ The on-chain memory budget of a script. + , bScriptSize :: Int -- ^ The on-chain size of a script. } deriving stock (Show, Eq, Ord) --- | Create a benchmark containing only the size of the script. -benchmarkSize :: Text -> Plutus.Script -> Set Benchmark -benchmarkSize name script = - Set.singleton $ - Benchmark - { name = name - , size = scriptSize script - } +benchmarkScript :: String -> Script -> Benchmark +benchmarkScript name script = Benchmark (pack name) cpu mem size + where + (ExBudget cpu mem) = evalScriptCounting . serialiseScriptShort $ script + size = SBS.length . SBS.toShort . LBS.toStrict . serialise $ script --- | Compute the size of a script on-chain. -scriptSize :: Plutus.Script -> Int -scriptSize = SBS.length . SBS.toShort . LBS.toStrict . serialise + serialiseScriptShort :: Script -> SBS.ShortByteString + serialiseScriptShort = SBS.toShort . LBS.toStrict . serialise -- Using `flat` here breaks `evalScriptCounting` + evalScriptCounting :: Plutus.SerializedScript -> Plutus.ExBudget + evalScriptCounting script = + let costModel = fromJust Plutus.defaultCostModelParams + (_logout, e) = Plutus.evaluateScriptCounting Plutus.Verbose costModel script [] + in case e of + Left evalError -> error ("Eval Error: " <> show evalError) + Right exbudget -> exbudget + +specificationTreeToBenchmarks :: SpecificationTree -> [Benchmark] +specificationTreeToBenchmarks = go [] + where + go names (Terminal ((Specification n ex s))) = case ex of + Success -> [benchmarkScript (intercalate "/" (names <> [n])) s] + _ -> [] + go names (Group gn tree) = mconcat $ go (names <> [gn]) <$> tree diff --git a/agora-bench/Main.hs b/agora-bench/Main.hs index 95307ca..c0dcc3f 100644 --- a/agora-bench/Main.hs +++ b/agora-bench/Main.hs @@ -1,42 +1,33 @@ module Main (main) where -import Agora.AuthorityToken (authorityTokenPolicy) -import Agora.Effect.TreasuryWithdrawal (treasuryWithdrawalValidator) -import Agora.Governor (Governor (..)) -import Agora.Governor.Scripts (governorPolicy, governorValidator) -import Agora.Proposal.Scripts (proposalPolicy, proposalValidator) -import Agora.Stake.Scripts (stakePolicy, stakeValidator) -import Agora.Treasury (treasuryValidator) -import Bench -import Data.Foldable (for_) -import Plutus.V1.Ledger.Api (CurrencySymbol) -import Sample.Shared +import Bench (specificationTreeToBenchmarks) +import Spec.AuthorityToken qualified as AuthorityToken +import Spec.Effect.GovernorMutation qualified as GovernorMutation +import Spec.Effect.TreasuryWithdrawal qualified as TreasuryWithdrawal +import Spec.Governor qualified as Governor +import Spec.Proposal qualified as Proposal +import Spec.Spec (group) +import Spec.Stake qualified as Stake +import Spec.Treasury qualified as Treasury import Prelude -------------------------------------------------------------------------------- main :: IO () main = do - let benchmarks = - mconcat - [ -- GATs - benchmarkSize "authorityTokenPolicy" $ compile $ authorityTokenPolicy authorityToken - , -- Governor - benchmarkSize "governorValidator" $ compile $ governorValidator governor - , benchmarkSize "governorPolicy" $ compile $ governorPolicy governor - , -- Stake - benchmarkSize "stakeValidator" $ compile $ stakeValidator stake - , benchmarkSize "stakePolicy" $ compile $ stakePolicy governor.gtClassRef - , -- Proposal - benchmarkSize "proposalValidator" $ compile $ proposalValidator proposal - , benchmarkSize "proposalPolicy" $ compile $ proposalPolicy govAssetClass - , -- Treasury - benchmarkSize "treasuryValidator" $ compile $ treasuryValidator gatCS - , -- Effect validators - benchmarkSize "treasuryWithdrawalValidator" $ compile $ treasuryWithdrawalValidator gatCS - ] - - for_ benchmarks print - -gatCS :: CurrencySymbol -gatCS = "73475cb40a568e8da8a045ced110137e159f890ac4da883b6b17dc651b3a8049" -- arbitrary CS + mapM_ print $ + specificationTreeToBenchmarks $ + group + "Benchmark" + [ group + "Effects" + [ group "Treasury Withdrawal Effect" TreasuryWithdrawal.specs + , group "Governor Mutation Effect" GovernorMutation.specs + ] + , group "Stake" Stake.specs + , group "Proposal" Proposal.specs + , group "AuthorityToken" AuthorityToken.specs + , group "Treasury" Treasury.specs + , group "AuthorityToken" AuthorityToken.specs + , group "Governor" Governor.specs + ] diff --git a/agora.cabal b/agora.cabal index 1e1eb81..8b86acb 100644 --- a/agora.cabal +++ b/agora.cabal @@ -217,6 +217,7 @@ benchmark agora-bench build-depends: , agora , agora-sample + , agora-spec executable agora-scripts import: lang, deps, exe-opts From ad957d6b023e7fdb131d0a97b63e51778c16c2bd Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 16:10:12 -0500 Subject: [PATCH 06/15] export benchmark to json --- agora-bench/Bench.hs | 18 ++++++++++++++++++ agora-bench/Main.hs | 35 +++++++++++++++++++---------------- agora-spec/Spec/Spec.hs | 2 +- bench.json | 1 + 4 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 bench.json diff --git a/agora-bench/Bench.hs b/agora-bench/Bench.hs index f6dc480..dd03722 100644 --- a/agora-bench/Bench.hs +++ b/agora-bench/Bench.hs @@ -1,6 +1,7 @@ module Bench (Benchmark (..), benchmarkScript, specificationTreeToBenchmarks) where import Codec.Serialise (serialise) +import Data.Aeson hiding (Success) import Data.ByteString.Lazy qualified as LBS import Data.ByteString.Short qualified as SBS import Data.List (intercalate) @@ -35,6 +36,23 @@ data Benchmark = Benchmark } deriving stock (Show, Eq, Ord) +instance FromJSON Benchmark where + parseJSON (Object v) = + Benchmark <$> v .: "name" + <*> v .: "cpu" + <*> v .: "mem" + <*> v .: "size" + parseJSON _ = mempty + +instance ToJSON Benchmark where + toJSON (Benchmark name cpu mem size) = + object + [ "name" .= name + , "cpu" .= cpu + , "mem" .= mem + , "size" .= size + ] + benchmarkScript :: String -> Script -> Benchmark benchmarkScript name script = Benchmark (pack name) cpu mem size where diff --git a/agora-bench/Main.hs b/agora-bench/Main.hs index c0dcc3f..c0c47c7 100644 --- a/agora-bench/Main.hs +++ b/agora-bench/Main.hs @@ -1,6 +1,8 @@ module Main (main) where import Bench (specificationTreeToBenchmarks) +import Data.Aeson.Text (encodeToLazyText) +import Data.Text.Lazy.IO as I import Spec.AuthorityToken qualified as AuthorityToken import Spec.Effect.GovernorMutation qualified as GovernorMutation import Spec.Effect.TreasuryWithdrawal qualified as TreasuryWithdrawal @@ -15,19 +17,20 @@ import Prelude main :: IO () main = do - mapM_ print $ - specificationTreeToBenchmarks $ - group - "Benchmark" - [ group - "Effects" - [ group "Treasury Withdrawal Effect" TreasuryWithdrawal.specs - , group "Governor Mutation Effect" GovernorMutation.specs - ] - , group "Stake" Stake.specs - , group "Proposal" Proposal.specs - , group "AuthorityToken" AuthorityToken.specs - , group "Treasury" Treasury.specs - , group "AuthorityToken" AuthorityToken.specs - , group "Governor" Governor.specs - ] + I.writeFile "bench.json" $ + encodeToLazyText $ + specificationTreeToBenchmarks $ + group + "Benchmark" + [ group + "Effects" + [ group "Treasury Withdrawal Effect" TreasuryWithdrawal.specs + , group "Governor Mutation Effect" GovernorMutation.specs + ] + , group "Stake" Stake.specs + , group "Proposal" Proposal.specs + , group "AuthorityToken" AuthorityToken.specs + , group "Treasury" Treasury.specs + , group "AuthorityToken" AuthorityToken.specs + , group "Governor" Governor.specs + ] diff --git a/agora-spec/Spec/Spec.hs b/agora-spec/Spec/Spec.hs index a58deac..f7dc14a 100644 --- a/agora-spec/Spec/Spec.hs +++ b/agora-spec/Spec/Spec.hs @@ -50,7 +50,7 @@ exists s (Group name st) = or (exists s <$> st) || s == name group :: String -> [SpecificationTree] -> SpecificationTree group name st - | or $ exists name <$> st = error "Name already exists" + | or $ exists name <$> st = error $ "Name already exists: " <> name | otherwise = Group name st getSpecification :: String -> SpecificationTree -> Maybe Specification diff --git a/bench.json b/bench.json new file mode 100644 index 0000000..2a045ee --- /dev/null +++ b/bench.json @@ -0,0 +1 @@ +[{"cpu":340268715,"mem":724428,"name":"Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple","size":3050},{"cpu":570029812,"mem":1211300,"name":"Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ","size":3377},{"cpu":502351827,"mem":1071087,"name":"Benchmark/Effects/Treasury Withdrawal Effect/effect/Mixed Assets","size":3242},{"cpu":103054094,"mem":227264,"name":"Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass","size":7467},{"cpu":126696096,"mem":263635,"name":"Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass","size":3293},{"cpu":147898986,"mem":329450,"name":"Benchmark/Stake/policy/stakeCreation","size":2265},{"cpu":261845190,"mem":576377,"name":"Benchmark/Stake/validator/stakeDepositWithdraw deposit","size":3829},{"cpu":261845190,"mem":576377,"name":"Benchmark/Stake/validator/stakeDepositWithdraw withdraw","size":3821},{"cpu":34571405,"mem":70066,"name":"Benchmark/Proposal/policy/proposalCreation","size":1549},{"cpu":242652509,"mem":511783,"name":"Benchmark/Proposal/validator/cosignature/proposal","size":5247},{"cpu":183513647,"mem":395070,"name":"Benchmark/Proposal/validator/cosignature/stake","size":4366},{"cpu":240358004,"mem":492704,"name":"Benchmark/Proposal/validator/voting/proposal","size":5255},{"cpu":154841851,"mem":329311,"name":"Benchmark/Proposal/validator/voting/stake","size":4419},{"cpu":25177457,"mem":55883,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple","size":806},{"cpu":40266637,"mem":88241,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs","size":900},{"cpu":37343572,"mem":79744,"name":"Benchmark/Treasury/Validator/Positive/Allows for effect changes","size":1841},{"cpu":25177457,"mem":55883,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple","size":806},{"cpu":40266637,"mem":88241,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs","size":900},{"cpu":57648280,"mem":119961,"name":"Benchmark/Governor/policy/GST minting","size":1836},{"cpu":309839049,"mem":649395,"name":"Benchmark/Governor/validator/proposal creation","size":7994},{"cpu":429394828,"mem":928681,"name":"Benchmark/Governor/validator/GATs minting","size":8113},{"cpu":100243054,"mem":221538,"name":"Benchmark/Governor/validator/mutate governor state","size":7540}] \ No newline at end of file From a74a98c20667e3d8ab53de3638b9f13f549b5435 Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 16:55:48 -0500 Subject: [PATCH 07/15] CSV would be better than JSON --- agora-bench/Bench.hs | 30 ++++++++++++++---------------- agora-bench/Main.hs | 7 ++++--- agora.cabal | 1 + bench.csv | 25 ++++++++++++++++++++++--- 4 files changed, 41 insertions(+), 22 deletions(-) diff --git a/agora-bench/Bench.hs b/agora-bench/Bench.hs index dd03722..3bdbe11 100644 --- a/agora-bench/Bench.hs +++ b/agora-bench/Bench.hs @@ -1,12 +1,15 @@ +{-# LANGUAGE RecordWildCards #-} + module Bench (Benchmark (..), benchmarkScript, specificationTreeToBenchmarks) where import Codec.Serialise (serialise) -import Data.Aeson hiding (Success) import Data.ByteString.Lazy qualified as LBS import Data.ByteString.Short qualified as SBS +import Data.Csv (ToNamedRecord, DefaultOrdered, toNamedRecord, namedRecord, header, headerOrder, (.=)) import Data.List (intercalate) import Data.Maybe (fromJust) import Data.Text (Text, pack) +import GHC.Generics (Generic) import Plutus.V1.Ledger.Api ( ExBudget (ExBudget), ExCPU, @@ -34,25 +37,20 @@ data Benchmark = Benchmark , bScriptSize :: Int -- ^ The on-chain size of a script. } - deriving stock (Show, Eq, Ord) + deriving stock (Show, Eq, Ord, Generic) -instance FromJSON Benchmark where - parseJSON (Object v) = - Benchmark <$> v .: "name" - <*> v .: "cpu" - <*> v .: "mem" - <*> v .: "size" - parseJSON _ = mempty - -instance ToJSON Benchmark where - toJSON (Benchmark name cpu mem size) = - object +instance ToNamedRecord Benchmark where + toNamedRecord (Benchmark {..}) = + namedRecord [ "name" .= name - , "cpu" .= cpu - , "mem" .= mem - , "size" .= size + , "cpu" .= bCPUBudget + , "mem" .= bMemoryBudget + , "size" .= bScriptSize ] +instance DefaultOrdered Benchmark where + headerOrder _ = header ["name", "cpu", "mem", "size"] + benchmarkScript :: String -> Script -> Benchmark benchmarkScript name script = Benchmark (pack name) cpu mem size where diff --git a/agora-bench/Main.hs b/agora-bench/Main.hs index c0c47c7..e4e8395 100644 --- a/agora-bench/Main.hs +++ b/agora-bench/Main.hs @@ -1,7 +1,8 @@ module Main (main) where import Bench (specificationTreeToBenchmarks) -import Data.Aeson.Text (encodeToLazyText) +import Data.Csv (encodeDefaultOrderedByName) +import Data.Text.Lazy.Encoding (decodeUtf8) import Data.Text.Lazy.IO as I import Spec.AuthorityToken qualified as AuthorityToken import Spec.Effect.GovernorMutation qualified as GovernorMutation @@ -17,8 +18,8 @@ import Prelude main :: IO () main = do - I.writeFile "bench.json" $ - encodeToLazyText $ + I.writeFile "bench.csv" $ + (decodeUtf8 . encodeDefaultOrderedByName) $ specificationTreeToBenchmarks $ group "Benchmark" diff --git a/agora.cabal b/agora.cabal index 8b86acb..ec03d58 100644 --- a/agora.cabal +++ b/agora.cabal @@ -218,6 +218,7 @@ benchmark agora-bench , agora , agora-sample , agora-spec + , cassava executable agora-scripts import: lang, deps, exe-opts diff --git a/bench.csv b/bench.csv index ef76a58..3ba8995 100644 --- a/bench.csv +++ b/bench.csv @@ -1,4 +1,23 @@ name,cpu,mem,size -full_scripts:authorityTokenPolicy,1756707,6000,841 -full_scripts:stakePolicy,3751498,12700,1610 -full_scripts:stakeValidator,3126265,10600,1500 +Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple,340268715,724428,3050 +Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ,570029812,1211300,3377 +Benchmark/Effects/Treasury Withdrawal Effect/effect/Mixed Assets,502351827,1071087,3242 +Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,103054094,227264,7467 +Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,126696096,263635,3293 +Benchmark/Stake/policy/stakeCreation,147898986,329450,2265 +Benchmark/Stake/validator/stakeDepositWithdraw deposit,261845190,576377,3829 +Benchmark/Stake/validator/stakeDepositWithdraw withdraw,261845190,576377,3821 +Benchmark/Proposal/policy/proposalCreation,34571405,70066,1549 +Benchmark/Proposal/validator/cosignature/proposal,242652509,511783,5247 +Benchmark/Proposal/validator/cosignature/stake,183513647,395070,4366 +Benchmark/Proposal/validator/voting/proposal,240358004,492704,5255 +Benchmark/Proposal/validator/voting/stake,154841851,329311,4419 +Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 +Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 +Benchmark/Treasury/Validator/Positive/Allows for effect changes,37343572,79744,1841 +Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 +Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 +Benchmark/Governor/policy/GST minting,57648280,119961,1836 +Benchmark/Governor/validator/proposal creation,309839049,649395,7994 +Benchmark/Governor/validator/GATs minting,429394828,928681,8113 +Benchmark/Governor/validator/mutate governor state,100243054,221538,7540 From e84b67306cb484f25b3c1a6c8179a2fe65d4e8f1 Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Tue, 24 May 2022 17:05:10 -0500 Subject: [PATCH 08/15] format --- agora-bench/Bench.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agora-bench/Bench.hs b/agora-bench/Bench.hs index 3bdbe11..33f8f9f 100644 --- a/agora-bench/Bench.hs +++ b/agora-bench/Bench.hs @@ -5,7 +5,7 @@ module Bench (Benchmark (..), benchmarkScript, specificationTreeToBenchmarks) wh import Codec.Serialise (serialise) import Data.ByteString.Lazy qualified as LBS import Data.ByteString.Short qualified as SBS -import Data.Csv (ToNamedRecord, DefaultOrdered, toNamedRecord, namedRecord, header, headerOrder, (.=)) +import Data.Csv (DefaultOrdered, ToNamedRecord, header, headerOrder, namedRecord, toNamedRecord, (.=)) import Data.List (intercalate) import Data.Maybe (fromJust) import Data.Text (Text, pack) From fa77b809b89b156bc408333e40b601eda7df8a74 Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Wed, 25 May 2022 11:45:03 -0500 Subject: [PATCH 09/15] rename/docstrings --- agora-spec/Spec/AuthorityToken.hs | 2 +- agora-spec/Spec/Effect/GovernorMutation.hs | 2 +- agora-spec/Spec/Effect/TreasuryWithdrawal.hs | 2 +- agora-spec/Spec/Governor.hs | 2 +- agora-spec/Spec/Proposal.hs | 2 +- agora-spec/Spec/{Spec.hs => Specification.hs} | 62 +++++++++++++++++-- agora-spec/Spec/Stake.hs | 2 +- agora-spec/Spec/Treasury.hs | 2 +- agora-test/Spec.hs | 2 +- agora.cabal | 2 +- 10 files changed, 67 insertions(+), 13 deletions(-) rename agora-spec/Spec/{Spec.hs => Specification.hs} (72%) diff --git a/agora-spec/Spec/AuthorityToken.hs b/agora-spec/Spec/AuthorityToken.hs index 1ff3de2..2c28b96 100644 --- a/agora-spec/Spec/AuthorityToken.hs +++ b/agora-spec/Spec/AuthorityToken.hs @@ -32,7 +32,7 @@ import Plutus.V1.Ledger.Api ( import Plutus.V1.Ledger.Interval qualified as Interval import Plutus.V1.Ledger.Value qualified as Value import PlutusTx.AssocMap qualified as AssocMap -import Spec.Spec ( +import Spec.Specification ( SpecificationTree, group, scriptFails, diff --git a/agora-spec/Spec/Effect/GovernorMutation.hs b/agora-spec/Spec/Effect/GovernorMutation.hs index 67cf59e..d38d382 100644 --- a/agora-spec/Spec/Effect/GovernorMutation.hs +++ b/agora-spec/Spec/Effect/GovernorMutation.hs @@ -15,7 +15,7 @@ import Sample.Effect.GovernorMutation ( validNewGovernorDatum, ) import Sample.Shared qualified as Shared -import Spec.Spec ( +import Spec.Specification ( SpecificationTree, effectFailsWith, effectSucceedsWith, diff --git a/agora-spec/Spec/Effect/TreasuryWithdrawal.hs b/agora-spec/Spec/Effect/TreasuryWithdrawal.hs index 9a6a485..f46808d 100644 --- a/agora-spec/Spec/Effect/TreasuryWithdrawal.hs +++ b/agora-spec/Spec/Effect/TreasuryWithdrawal.hs @@ -25,7 +25,7 @@ import Sample.Effect.TreasuryWithdrawal ( treasuries, users, ) -import Spec.Spec ( +import Spec.Specification ( SpecificationTree, effectFailsWith, effectSucceedsWith, diff --git a/agora-spec/Spec/Governor.hs b/agora-spec/Spec/Governor.hs index 3cbcb57..214b4d3 100644 --- a/agora-spec/Spec/Governor.hs +++ b/agora-spec/Spec/Governor.hs @@ -19,7 +19,7 @@ import Agora.Proposal (ProposalId (..)) import Data.Default.Class (Default (def)) import Sample.Governor (createProposal, mintGATs, mintGST, mutateState) import Sample.Shared qualified as Shared -import Spec.Spec ( +import Spec.Specification ( SpecificationTree, group, policySucceedsWith, diff --git a/agora-spec/Spec/Proposal.hs b/agora-spec/Spec/Proposal.hs index c57fb78..d4c6426 100644 --- a/agora-spec/Spec/Proposal.hs +++ b/agora-spec/Spec/Proposal.hs @@ -45,7 +45,7 @@ import PlutusTx.AssocMap qualified as AssocMap import Sample.Proposal qualified as Proposal import Sample.Shared (signer, signer2) import Sample.Shared qualified as Shared -import Spec.Spec ( +import Spec.Specification ( SpecificationTree, group, policySucceedsWith, diff --git a/agora-spec/Spec/Spec.hs b/agora-spec/Spec/Specification.hs similarity index 72% rename from agora-spec/Spec/Spec.hs rename to agora-spec/Spec/Specification.hs index f7dc14a..37b512b 100644 --- a/agora-spec/Spec/Spec.hs +++ b/agora-spec/Spec/Specification.hs @@ -1,11 +1,39 @@ -module Spec.Spec ( +{- | +Module : Spec.Specification +Maintainer : seungheon.ooh@gmail.com +Description: Helpers to build Specification for testing and bench-marking + +Constructors for building a specification for Plutarch scripts: + + - 'policySucceedsWith': checks that a minting policy succeeds. + + - 'policyFailsWith': checks that a minting policy fails. + + - 'validatorSucceedsWith': checks that validator succeeds. + + - 'validatorFailsWith': checks that validator fails. + + - 'effectSucceedsWith': checks that effect succeeds. + + - 'effectFailsWith': checks that effect fails. + + - 'scriptSucceeds': checks that an arbitrary script does not + `perror`. + + - 'scriptFails': checks that an arbitrary script `perror`s out. +-} +module Spec.Specification ( + -- * Structures Specification (..), SpecificationExpectation (..), SpecificationTree (..), + + -- * Spec helpers group, - toTestTree, getSpecification, getSpecificationTree, + + -- * Spec builders scriptSucceeds, scriptFails, policySucceedsWith, @@ -14,6 +42,9 @@ module Spec.Spec ( validatorFailsWith, effectSucceedsWith, effectFailsWith, + + -- * Converters + toTestTree, ) where import Data.Maybe (catMaybes) @@ -26,12 +57,20 @@ import PlutusTx.IsData qualified as PlutusTx (ToData) import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit (assertFailure, testCase) +{-| Expectations upon execution of script + @Success@ indicates a successful execution. + @Failure@ inidcates a faulty execution. + @FailureWith@ indicates a faulty execution but with expected reason for failure. +-} data SpecificationExpectation = Success | Failure | FailureWith String deriving stock (Show) +{-| Unit of specification. @Specification@ holds name, expectation, and + script to be tested or executed later on. +-} data Specification = Specification { sName :: String , sExpectation :: SpecificationExpectation @@ -39,20 +78,25 @@ data Specification = Specification } deriving stock (Show) +-- | Tree-structure to group alike specifications--modeled after @TestTree@ from tasty. data SpecificationTree = Terminal Specification | Group String [SpecificationTree] deriving stock (Show) +-- | Checks if given name exists in @SpecificationTree@ as either +-- group name or specification name. exists :: String -> SpecificationTree -> Bool exists s (Terminal (Specification name _ _)) = s == name exists s (Group name st) = or (exists s <$> st) || s == name +-- | Groups alike @SpecificationTree@s into a bigger tree. group :: String -> [SpecificationTree] -> SpecificationTree group name st | or $ exists name <$> st = error $ "Name already exists: " <> name | otherwise = Group name st +-- | Query specific @Specification@ from a tree. getSpecification :: String -> SpecificationTree -> Maybe Specification getSpecification name (Terminal spec@(Specification sn _ _)) | name == sn = Just spec @@ -63,6 +107,7 @@ getSpecification name (Group _ st) where specs = catMaybes $ getSpecification name <$> st +-- | Query specific @SpecificationTree@ from a tree. getSpecificationTree :: String -> SpecificationTree -> Maybe SpecificationTree getSpecificationTree name specTree@(Group gn st) | gn == name = Just specTree @@ -72,6 +117,7 @@ getSpecificationTree name specTree@(Group gn st) trees = catMaybes $ getSpecificationTree name <$> st getSpecificationTree _ _ = Nothing +-- | Convert @SpecificationTree@ into @TestTree@ to be used as a unit test. toTestTree :: SpecificationTree -> TestTree toTestTree (Group name st) = testGroup name $ toTestTree <$> st toTestTree (Terminal (Specification name expectation script)) = @@ -103,12 +149,15 @@ toTestTree (Terminal (Specification name expectation script)) = <> ts _ -> pure () +-- | Check that an arbitrary script doesn't error when evaluated, given a name. scriptSucceeds :: String -> Script -> SpecificationTree scriptSucceeds name script = Terminal $ Specification name Success script +-- | Check that an arbitrary script **does** error when evaluated, given a name. scriptFails :: String -> Script -> SpecificationTree scriptFails name script = Terminal $ Specification name Failure script +-- | Check that a policy script succeeds, given a name and arguments. policySucceedsWith :: ( PLift redeemer , PlutusTx.ToData (PLifted redeemer) @@ -125,7 +174,8 @@ policySucceedsWith tag policy redeemer scriptContext = # pforgetData (pconstantData redeemer) # pconstant scriptContext ) - + +-- | Check that a policy script fails, given a name and arguments. policyFailsWith :: ( PLift redeemer , PlutusTx.ToData (PLifted redeemer) @@ -142,7 +192,8 @@ policyFailsWith tag policy redeemer scriptContext = # pforgetData (pconstantData redeemer) # pconstant scriptContext ) - + +-- | Check that a validator script succeeds, given a name and arguments. validatorSucceedsWith :: ( PLift datum , PlutusTx.ToData (PLifted datum) @@ -164,6 +215,7 @@ validatorSucceedsWith tag validator datum redeemer scriptContext = # pconstant scriptContext ) +-- | Check that a validator script fails, given a name and arguments. validatorFailsWith :: ( PLift datum , PlutusTx.ToData (PLifted datum) @@ -185,6 +237,7 @@ validatorFailsWith tag validator datum redeemer scriptContext = # pconstant scriptContext ) +-- | Check that an effect succeeds, given a name and argument. effectSucceedsWith :: ( PLift datum , PlutusTx.ToData (PLifted datum) @@ -196,6 +249,7 @@ effectSucceedsWith :: SpecificationTree effectSucceedsWith tag eff datum = validatorSucceedsWith tag eff datum () +-- | Check that an effect fails, given a name and argument. effectFailsWith :: ( PLift datum , PlutusTx.ToData (PLifted datum) diff --git a/agora-spec/Spec/Stake.hs b/agora-spec/Spec/Stake.hs index 3b1ac09..d48b7d2 100644 --- a/agora-spec/Spec/Stake.hs +++ b/agora-spec/Spec/Stake.hs @@ -22,7 +22,7 @@ import Agora.Stake.Scripts (stakePolicy, stakeValidator) import Sample.Stake (DepositWithdrawExample (DepositWithdrawExample, delta, startAmount), signer) import Sample.Stake qualified as Stake -import Spec.Spec ( +import Spec.Specification ( SpecificationTree, group, policyFailsWith, diff --git a/agora-spec/Spec/Treasury.hs b/agora-spec/Spec/Treasury.hs index 03db77d..7f36e89 100644 --- a/agora-spec/Spec/Treasury.hs +++ b/agora-spec/Spec/Treasury.hs @@ -48,7 +48,7 @@ import Sample.Treasury ( validCtx, walletIn, ) -import Spec.Spec ( +import Spec.Specification ( SpecificationTree, group, validatorFailsWith, diff --git a/agora-test/Spec.hs b/agora-test/Spec.hs index 3162fd8..aca4d05 100644 --- a/agora-test/Spec.hs +++ b/agora-test/Spec.hs @@ -17,7 +17,7 @@ import Spec.Stake qualified as Stake import Spec.Treasury qualified as Treasury import Spec.Utils qualified as Utils -import Spec.Spec (group, toTestTree) +import Spec.Specification (group, toTestTree) -- | The Agora test suite. main :: IO () diff --git a/agora.cabal b/agora.cabal index ec03d58..65ab99c 100644 --- a/agora.cabal +++ b/agora.cabal @@ -182,13 +182,13 @@ library agora-sample library agora-spec import: lang, deps, test-deps exposed-modules: + Spec.Specification Spec.AuthorityToken Spec.Effect.GovernorMutation Spec.Effect.TreasuryWithdrawal Spec.Governor Spec.Model.MultiSig Spec.Proposal - Spec.Spec Spec.Stake Spec.Treasury Spec.Utils From 32f6db5a660aa566efbc97db998e56587e4d2867 Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Wed, 25 May 2022 11:49:43 -0500 Subject: [PATCH 10/15] rename/temp print --- agora-bench/Bench.hs | 14 +++++++------- agora-bench/Main.hs | 7 ++++++- bench.json | 1 - 3 files changed, 13 insertions(+), 9 deletions(-) delete mode 100644 bench.json diff --git a/agora-bench/Bench.hs b/agora-bench/Bench.hs index 33f8f9f..a612b83 100644 --- a/agora-bench/Bench.hs +++ b/agora-bench/Bench.hs @@ -18,7 +18,7 @@ import Plutus.V1.Ledger.Api ( ) import Plutus.V1.Ledger.Api qualified as Plutus -import Spec.Spec ( +import Spec.Specification ( Specification (Specification), SpecificationExpectation (Success), SpecificationTree (..), @@ -30,11 +30,11 @@ import Spec.Spec ( data Benchmark = Benchmark { name :: Text -- ^ Human readable name describing script. - , bCPUBudget :: ExCPU + , cpuBudget :: ExCPU -- ^ The on-chain execution cost of a script. - , bMemoryBudget :: ExMemory + , memoryBudget :: ExMemory -- ^ The on-chain memory budget of a script. - , bScriptSize :: Int + , scriptSize :: Int -- ^ The on-chain size of a script. } deriving stock (Show, Eq, Ord, Generic) @@ -43,9 +43,9 @@ instance ToNamedRecord Benchmark where toNamedRecord (Benchmark {..}) = namedRecord [ "name" .= name - , "cpu" .= bCPUBudget - , "mem" .= bMemoryBudget - , "size" .= bScriptSize + , "cpu" .= cpuBudget + , "mem" .= memoryBudget + , "size" .= scriptSize ] instance DefaultOrdered Benchmark where diff --git a/agora-bench/Main.hs b/agora-bench/Main.hs index e4e8395..da9f79a 100644 --- a/agora-bench/Main.hs +++ b/agora-bench/Main.hs @@ -9,7 +9,7 @@ import Spec.Effect.GovernorMutation qualified as GovernorMutation import Spec.Effect.TreasuryWithdrawal qualified as TreasuryWithdrawal import Spec.Governor qualified as Governor import Spec.Proposal qualified as Proposal -import Spec.Spec (group) +import Spec.Specification (group) import Spec.Stake qualified as Stake import Spec.Treasury qualified as Treasury import Prelude @@ -20,6 +20,11 @@ main :: IO () main = do I.writeFile "bench.csv" $ (decodeUtf8 . encodeDefaultOrderedByName) $ + res + + mapM_ print res + where + res = specificationTreeToBenchmarks $ group "Benchmark" diff --git a/bench.json b/bench.json deleted file mode 100644 index 2a045ee..0000000 --- a/bench.json +++ /dev/null @@ -1 +0,0 @@ -[{"cpu":340268715,"mem":724428,"name":"Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple","size":3050},{"cpu":570029812,"mem":1211300,"name":"Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ","size":3377},{"cpu":502351827,"mem":1071087,"name":"Benchmark/Effects/Treasury Withdrawal Effect/effect/Mixed Assets","size":3242},{"cpu":103054094,"mem":227264,"name":"Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass","size":7467},{"cpu":126696096,"mem":263635,"name":"Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass","size":3293},{"cpu":147898986,"mem":329450,"name":"Benchmark/Stake/policy/stakeCreation","size":2265},{"cpu":261845190,"mem":576377,"name":"Benchmark/Stake/validator/stakeDepositWithdraw deposit","size":3829},{"cpu":261845190,"mem":576377,"name":"Benchmark/Stake/validator/stakeDepositWithdraw withdraw","size":3821},{"cpu":34571405,"mem":70066,"name":"Benchmark/Proposal/policy/proposalCreation","size":1549},{"cpu":242652509,"mem":511783,"name":"Benchmark/Proposal/validator/cosignature/proposal","size":5247},{"cpu":183513647,"mem":395070,"name":"Benchmark/Proposal/validator/cosignature/stake","size":4366},{"cpu":240358004,"mem":492704,"name":"Benchmark/Proposal/validator/voting/proposal","size":5255},{"cpu":154841851,"mem":329311,"name":"Benchmark/Proposal/validator/voting/stake","size":4419},{"cpu":25177457,"mem":55883,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple","size":806},{"cpu":40266637,"mem":88241,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs","size":900},{"cpu":37343572,"mem":79744,"name":"Benchmark/Treasury/Validator/Positive/Allows for effect changes","size":1841},{"cpu":25177457,"mem":55883,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple","size":806},{"cpu":40266637,"mem":88241,"name":"Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs","size":900},{"cpu":57648280,"mem":119961,"name":"Benchmark/Governor/policy/GST minting","size":1836},{"cpu":309839049,"mem":649395,"name":"Benchmark/Governor/validator/proposal creation","size":7994},{"cpu":429394828,"mem":928681,"name":"Benchmark/Governor/validator/GATs minting","size":8113},{"cpu":100243054,"mem":221538,"name":"Benchmark/Governor/validator/mutate governor state","size":7540}] \ No newline at end of file From cde96df6a37312997920520fb7531e65f47d594c Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Wed, 25 May 2022 11:57:11 -0500 Subject: [PATCH 11/15] removed redundant codes --- agora-bench/Main.hs | 7 +- agora-spec/Spec/Specification.hs | 13 +-- agora-testlib/Test/Util.hs | 175 +------------------------------ agora.cabal | 2 +- 4 files changed, 12 insertions(+), 185 deletions(-) diff --git a/agora-bench/Main.hs b/agora-bench/Main.hs index da9f79a..9acb2ab 100644 --- a/agora-bench/Main.hs +++ b/agora-bench/Main.hs @@ -19,12 +19,11 @@ import Prelude main :: IO () main = do I.writeFile "bench.csv" $ - (decodeUtf8 . encodeDefaultOrderedByName) $ - res + (decodeUtf8 . encodeDefaultOrderedByName) res - mapM_ print res + mapM_ print res where - res = + res = specificationTreeToBenchmarks $ group "Benchmark" diff --git a/agora-spec/Spec/Specification.hs b/agora-spec/Spec/Specification.hs index 37b512b..9570a30 100644 --- a/agora-spec/Spec/Specification.hs +++ b/agora-spec/Spec/Specification.hs @@ -57,7 +57,7 @@ import PlutusTx.IsData qualified as PlutusTx (ToData) import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit (assertFailure, testCase) -{-| Expectations upon execution of script +{- | Expectations upon execution of script @Success@ indicates a successful execution. @Failure@ inidcates a faulty execution. @FailureWith@ indicates a faulty execution but with expected reason for failure. @@ -68,7 +68,7 @@ data SpecificationExpectation | FailureWith String deriving stock (Show) -{-| Unit of specification. @Specification@ holds name, expectation, and +{- | Unit of specification. @Specification@ holds name, expectation, and script to be tested or executed later on. -} data Specification = Specification @@ -84,8 +84,9 @@ data SpecificationTree | Group String [SpecificationTree] deriving stock (Show) --- | Checks if given name exists in @SpecificationTree@ as either --- group name or specification name. +{- | Checks if given name exists in @SpecificationTree@ as either + group name or specification name. +-} exists :: String -> SpecificationTree -> Bool exists s (Terminal (Specification name _ _)) = s == name exists s (Group name st) = or (exists s <$> st) || s == name @@ -174,7 +175,7 @@ policySucceedsWith tag policy redeemer scriptContext = # pforgetData (pconstantData redeemer) # pconstant scriptContext ) - + -- | Check that a policy script fails, given a name and arguments. policyFailsWith :: ( PLift redeemer @@ -192,7 +193,7 @@ policyFailsWith tag policy redeemer scriptContext = # pforgetData (pconstantData redeemer) # pconstant scriptContext ) - + -- | Check that a validator script succeeds, given a name and arguments. validatorSucceedsWith :: ( PLift datum diff --git a/agora-testlib/Test/Util.hs b/agora-testlib/Test/Util.hs index ab750d1..030ae28 100644 --- a/agora-testlib/Test/Util.hs +++ b/agora-testlib/Test/Util.hs @@ -2,37 +2,8 @@ Module : Test.Util Maintainer : emi@haskell.fyi Description: Utility functions for testing Plutarch scripts with ScriptContext - -Utility functions for testing Plutarch scripts with ScriptContext: - - - 'policySucceedsWith': checks that a minting policy succeeds. - - - 'policyFailsWith': checks that a minting policy fails. - - - 'validatorSucceedsWith': checks that validator succeeds. - - - 'validatorFailsWith': checks that validator fails. - - - 'effectSucceedsWith': checks that effect succeeds. - - - 'effectFailsWith': checks that effect fails. - - - 'scriptSucceeds': checks that an arbitrary script does not - `perror`. - - - 'scriptFails': checks that an arbitrary script `perror`s out. -} module Test.Util ( - -- * Testing utils - scriptSucceeds, - scriptFails, - policySucceedsWith, - policyFailsWith, - validatorSucceedsWith, - validatorFailsWith, - effectSucceedsWith, - effectFailsWith, - -- * Plutus-land utils datumHash, toDatum, @@ -53,19 +24,9 @@ import Data.ByteString.Lazy qualified as ByteString.Lazy -------------------------------------------------------------------------------- -import Test.Tasty (TestTree) -import Test.Tasty.HUnit (assertFailure, testCase) - --------------------------------------------------------------------------------- - -import Plutarch.Api.V1 (PMintingPolicy, PValidator) -import Plutarch.Builtin (pforgetData) import Plutarch.Crypto (pblake2b_256) -import Plutarch.Evaluate (evalScript) -import Plutarch.Lift (PUnsafeLiftDecl (PLifted)) -import Plutus.V1.Ledger.Contexts (ScriptContext) import Plutus.V1.Ledger.Interval as PlutusTx -import Plutus.V1.Ledger.Scripts (Datum (Datum), DatumHash (DatumHash), Script) +import Plutus.V1.Ledger.Scripts (Datum (Datum), DatumHash (DatumHash)) import PlutusTx.AssocMap qualified as AssocMap import PlutusTx.Builtins qualified as PlutusTx import PlutusTx.IsData qualified as PlutusTx @@ -73,140 +34,6 @@ import PlutusTx.Ord qualified as PlutusTx -------------------------------------------------------------------------------- --- | Check that a policy script succeeds, given a name and arguments. -policySucceedsWith :: - ( PLift redeemer - , PlutusTx.ToData (PLifted redeemer) - ) => - String -> - ClosedTerm PMintingPolicy -> - PLifted redeemer -> - ScriptContext -> - TestTree -policySucceedsWith tag policy redeemer scriptContext = - scriptSucceeds tag $ - compile - ( policy - # pforgetData (pconstantData redeemer) - # pconstant scriptContext - ) - --- | Check that a policy script fails, given a name and arguments. -policyFailsWith :: - ( PLift redeemer - , PlutusTx.ToData (PLifted redeemer) - ) => - String -> - ClosedTerm PMintingPolicy -> - PLifted redeemer -> - ScriptContext -> - TestTree -policyFailsWith tag policy redeemer scriptContext = - scriptFails tag $ - compile - ( policy - # pforgetData (pconstantData redeemer) - # pconstant scriptContext - ) - --- | Check that a validator script succeeds, given a name and arguments. -validatorSucceedsWith :: - ( PLift datum - , PlutusTx.ToData (PLifted datum) - , PLift redeemer - , PlutusTx.ToData (PLifted redeemer) - ) => - String -> - ClosedTerm PValidator -> - PLifted datum -> - PLifted redeemer -> - ScriptContext -> - TestTree -validatorSucceedsWith tag validator datum redeemer scriptContext = - scriptSucceeds tag $ - compile - ( validator - # pforgetData (pconstantData datum) - # pforgetData (pconstantData redeemer) - # pconstant scriptContext - ) - --- | Check that a validator script fails, given a name and arguments. -validatorFailsWith :: - ( PLift datum - , PlutusTx.ToData (PLifted datum) - , PLift redeemer - , PlutusTx.ToData (PLifted redeemer) - ) => - String -> - ClosedTerm PValidator -> - PLifted datum -> - PLifted redeemer -> - ScriptContext -> - TestTree -validatorFailsWith tag validator datum redeemer scriptContext = - scriptFails tag $ - compile - ( validator - # pforgetData (pconstantData datum) - # pforgetData (pconstantData redeemer) - # pconstant scriptContext - ) - -{- | Check that a validator script succeeds, given a name and arguments. - TODO: Change docstring. --} -effectSucceedsWith :: - ( PLift datum - , PlutusTx.ToData (PLifted datum) - ) => - String -> - ClosedTerm PValidator -> - PLifted datum -> - ScriptContext -> - TestTree -effectSucceedsWith tag eff datum = validatorSucceedsWith tag eff datum () - --- TODO: Change docstring. - -{- | Check that a validator script fails, given a name and arguments. - TODO: Change docstring. --} -effectFailsWith :: - ( PLift datum - , PlutusTx.ToData (PLifted datum) - ) => - String -> - ClosedTerm PValidator -> - PLifted datum -> - ScriptContext -> - TestTree -effectFailsWith tag eff datum = validatorFailsWith tag eff datum () - --- | Check that an arbitrary script doesn't error when evaluated, given a name. -scriptSucceeds :: String -> Script -> TestTree -scriptSucceeds name script = testCase name $ do - let (res, _budget, traces) = evalScript script - case res of - Left e -> do - assertFailure $ - show e <> " Traces: " <> show traces - Right _v -> - pure () - --- | Check that an arbitrary script **does** error when evaluated, given a name. -scriptFails :: String -> Script -> TestTree -scriptFails name script = testCase name $ do - let (res, _budget, traces) = evalScript script - case res of - Left _e -> - pure () - Right v -> - assertFailure $ - "Expected failure, but succeeded. " <> show v <> " Traces: " <> show traces - --------------------------------------------------------------------------------- - {- | Create a pair from data for use in 'txInfoData'. Example: diff --git a/agora.cabal b/agora.cabal index 65ab99c..8797761 100644 --- a/agora.cabal +++ b/agora.cabal @@ -182,13 +182,13 @@ library agora-sample library agora-spec import: lang, deps, test-deps exposed-modules: - Spec.Specification Spec.AuthorityToken Spec.Effect.GovernorMutation Spec.Effect.TreasuryWithdrawal Spec.Governor Spec.Model.MultiSig Spec.Proposal + Spec.Specification Spec.Stake Spec.Treasury Spec.Utils From 15d58323a97f1c8891afe899db37736176cb92ee Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Wed, 25 May 2022 14:35:57 -0500 Subject: [PATCH 12/15] better queries --- agora-spec/Spec/Specification.hs | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/agora-spec/Spec/Specification.hs b/agora-spec/Spec/Specification.hs index 9570a30..3e2441e 100644 --- a/agora-spec/Spec/Specification.hs +++ b/agora-spec/Spec/Specification.hs @@ -47,7 +47,6 @@ module Spec.Specification ( toTestTree, ) where -import Data.Maybe (catMaybes) import Plutarch.Api.V1 (PMintingPolicy, PValidator) import Plutarch.Builtin (pforgetData) import Plutarch.Evaluate (evalScript) @@ -98,25 +97,18 @@ group name st | otherwise = Group name st -- | Query specific @Specification@ from a tree. -getSpecification :: String -> SpecificationTree -> Maybe Specification +getSpecification :: String -> SpecificationTree -> [Specification] getSpecification name (Terminal spec@(Specification sn _ _)) - | name == sn = Just spec - | otherwise = Nothing -getSpecification name (Group _ st) - | length specs == 1 = Just $ head specs - | otherwise = Nothing - where - specs = catMaybes $ getSpecification name <$> st + | name == sn = [spec] + | otherwise = [] +getSpecification name (Group _ st) = mconcat $ (getSpecification name) <$> st -- | Query specific @SpecificationTree@ from a tree. -getSpecificationTree :: String -> SpecificationTree -> Maybe SpecificationTree +getSpecificationTree :: String -> SpecificationTree -> [SpecificationTree] getSpecificationTree name specTree@(Group gn st) - | gn == name = Just specTree - | length trees == 1 = Just $ head trees - | otherwise = Nothing - where - trees = catMaybes $ getSpecificationTree name <$> st -getSpecificationTree _ _ = Nothing + | gn == name = [specTree] + | otherwise = mconcat $ (getSpecificationTree name) <$> st +getSpecificationTree _ _ = [] -- | Convert @SpecificationTree@ into @TestTree@ to be used as a unit test. toTestTree :: SpecificationTree -> TestTree From 7457c6334b442aa7845f7e223057df9f8927f9ed Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Wed, 25 May 2022 14:52:33 -0500 Subject: [PATCH 13/15] pretty print --- agora-bench/Bench.hs | 12 ++++++--- agora-bench/Main.hs | 4 +-- agora-spec/Spec/Specification.hs | 4 +-- bench.csv | 44 ++++++++++++++++---------------- 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/agora-bench/Bench.hs b/agora-bench/Bench.hs index a612b83..4ea448d 100644 --- a/agora-bench/Bench.hs +++ b/agora-bench/Bench.hs @@ -8,12 +8,12 @@ import Data.ByteString.Short qualified as SBS import Data.Csv (DefaultOrdered, ToNamedRecord, header, headerOrder, namedRecord, toNamedRecord, (.=)) import Data.List (intercalate) import Data.Maybe (fromJust) -import Data.Text (Text, pack) +import Data.Text (Text, pack, unpack) import GHC.Generics (Generic) import Plutus.V1.Ledger.Api ( ExBudget (ExBudget), - ExCPU, - ExMemory, + ExCPU (..), + ExMemory (..), Script, ) import Plutus.V1.Ledger.Api qualified as Plutus @@ -37,7 +37,11 @@ data Benchmark = Benchmark , scriptSize :: Int -- ^ The on-chain size of a script. } - deriving stock (Show, Eq, Ord, Generic) + deriving stock (Eq, Ord, Generic) + +instance Show Benchmark where + show (Benchmark name (ExCPU cpu) (ExMemory mem) size) = + unpack name <> "\n\tCPU: " <> show cpu <> " MEM: " <> show mem <> " SIZE: " <> show size instance ToNamedRecord Benchmark where toNamedRecord (Benchmark {..}) = diff --git a/agora-bench/Main.hs b/agora-bench/Main.hs index 9acb2ab..ba3490d 100644 --- a/agora-bench/Main.hs +++ b/agora-bench/Main.hs @@ -21,12 +21,12 @@ main = do I.writeFile "bench.csv" $ (decodeUtf8 . encodeDefaultOrderedByName) res - mapM_ print res + mapM_ (Prelude.putStrLn . (<> "\n") . show) res where res = specificationTreeToBenchmarks $ group - "Benchmark" + "Agora" [ group "Effects" [ group "Treasury Withdrawal Effect" TreasuryWithdrawal.specs diff --git a/agora-spec/Spec/Specification.hs b/agora-spec/Spec/Specification.hs index 3e2441e..2063260 100644 --- a/agora-spec/Spec/Specification.hs +++ b/agora-spec/Spec/Specification.hs @@ -101,13 +101,13 @@ getSpecification :: String -> SpecificationTree -> [Specification] getSpecification name (Terminal spec@(Specification sn _ _)) | name == sn = [spec] | otherwise = [] -getSpecification name (Group _ st) = mconcat $ (getSpecification name) <$> st +getSpecification name (Group _ st) = mconcat $ getSpecification name <$> st -- | Query specific @SpecificationTree@ from a tree. getSpecificationTree :: String -> SpecificationTree -> [SpecificationTree] getSpecificationTree name specTree@(Group gn st) | gn == name = [specTree] - | otherwise = mconcat $ (getSpecificationTree name) <$> st + | otherwise = mconcat $ getSpecificationTree name <$> st getSpecificationTree _ _ = [] -- | Convert @SpecificationTree@ into @TestTree@ to be used as a unit test. diff --git a/bench.csv b/bench.csv index 3ba8995..bbfcfc8 100644 --- a/bench.csv +++ b/bench.csv @@ -1,23 +1,23 @@ name,cpu,mem,size -Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple,340268715,724428,3050 -Benchmark/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ,570029812,1211300,3377 -Benchmark/Effects/Treasury Withdrawal Effect/effect/Mixed Assets,502351827,1071087,3242 -Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,103054094,227264,7467 -Benchmark/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,126696096,263635,3293 -Benchmark/Stake/policy/stakeCreation,147898986,329450,2265 -Benchmark/Stake/validator/stakeDepositWithdraw deposit,261845190,576377,3829 -Benchmark/Stake/validator/stakeDepositWithdraw withdraw,261845190,576377,3821 -Benchmark/Proposal/policy/proposalCreation,34571405,70066,1549 -Benchmark/Proposal/validator/cosignature/proposal,242652509,511783,5247 -Benchmark/Proposal/validator/cosignature/stake,183513647,395070,4366 -Benchmark/Proposal/validator/voting/proposal,240358004,492704,5255 -Benchmark/Proposal/validator/voting/stake,154841851,329311,4419 -Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 -Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 -Benchmark/Treasury/Validator/Positive/Allows for effect changes,37343572,79744,1841 -Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 -Benchmark/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 -Benchmark/Governor/policy/GST minting,57648280,119961,1836 -Benchmark/Governor/validator/proposal creation,309839049,649395,7994 -Benchmark/Governor/validator/GATs minting,429394828,928681,8113 -Benchmark/Governor/validator/mutate governor state,100243054,221538,7540 +Agora/Effects/Treasury Withdrawal Effect/effect/Simple,340268715,724428,3050 +Agora/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ,570029812,1211300,3377 +Agora/Effects/Treasury Withdrawal Effect/effect/Mixed Assets,502351827,1071087,3242 +Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,103054094,227264,7467 +Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,126696096,263635,3293 +Agora/Stake/policy/stakeCreation,147898986,329450,2265 +Agora/Stake/validator/stakeDepositWithdraw deposit,261845190,576377,3829 +Agora/Stake/validator/stakeDepositWithdraw withdraw,261845190,576377,3821 +Agora/Proposal/policy/proposalCreation,34571405,70066,1549 +Agora/Proposal/validator/cosignature/proposal,242652509,511783,5247 +Agora/Proposal/validator/cosignature/stake,183513647,395070,4366 +Agora/Proposal/validator/voting/proposal,240358004,492704,5255 +Agora/Proposal/validator/voting/stake,154841851,329311,4419 +Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 +Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 +Agora/Treasury/Validator/Positive/Allows for effect changes,37343572,79744,1841 +Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 +Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 +Agora/Governor/policy/GST minting,57648280,119961,1836 +Agora/Governor/validator/proposal creation,309839049,649395,7994 +Agora/Governor/validator/GATs minting,429394828,928681,8113 +Agora/Governor/validator/mutate governor state,100243054,221538,7540 From 35d758fcded9f502525b9aa9023b948f35157c9f Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Thu, 26 May 2022 09:37:41 -0500 Subject: [PATCH 14/15] pretty printer --- agora-bench/Bench.hs | 19 ++++++++++++++----- agora-bench/Main.hs | 6 ++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/agora-bench/Bench.hs b/agora-bench/Bench.hs index 4ea448d..53a7cab 100644 --- a/agora-bench/Bench.hs +++ b/agora-bench/Bench.hs @@ -8,7 +8,7 @@ import Data.ByteString.Short qualified as SBS import Data.Csv (DefaultOrdered, ToNamedRecord, header, headerOrder, namedRecord, toNamedRecord, (.=)) import Data.List (intercalate) import Data.Maybe (fromJust) -import Data.Text (Text, pack, unpack) +import Data.Text (Text, pack) import GHC.Generics (Generic) import Plutus.V1.Ledger.Api ( ExBudget (ExBudget), @@ -17,6 +17,7 @@ import Plutus.V1.Ledger.Api ( Script, ) import Plutus.V1.Ledger.Api qualified as Plutus +import Prettyprinter (Pretty (pretty), indent, vsep) import Spec.Specification ( Specification (Specification), @@ -37,11 +38,19 @@ data Benchmark = Benchmark , scriptSize :: Int -- ^ The on-chain size of a script. } - deriving stock (Eq, Ord, Generic) + deriving stock (Show, Eq, Ord, Generic) -instance Show Benchmark where - show (Benchmark name (ExCPU cpu) (ExMemory mem) size) = - unpack name <> "\n\tCPU: " <> show cpu <> " MEM: " <> show mem <> " SIZE: " <> show size +instance Pretty Benchmark where + pretty (Benchmark name (ExCPU (toInteger -> cpu)) (ExMemory (toInteger -> mem)) size) = + vsep + [ pretty name + , indent 4 $ + vsep + [ "CPU: " <> pretty cpu + , "MEM: " <> pretty mem + , "SIZE: " <> pretty size + ] + ] instance ToNamedRecord Benchmark where toNamedRecord (Benchmark {..}) = diff --git a/agora-bench/Main.hs b/agora-bench/Main.hs index ba3490d..f15e73f 100644 --- a/agora-bench/Main.hs +++ b/agora-bench/Main.hs @@ -3,7 +3,9 @@ module Main (main) where import Bench (specificationTreeToBenchmarks) import Data.Csv (encodeDefaultOrderedByName) import Data.Text.Lazy.Encoding (decodeUtf8) -import Data.Text.Lazy.IO as I +import Data.Text.Lazy.IO as I (writeFile) +import Prettyprinter (defaultLayoutOptions, layoutPretty, pretty) +import Prettyprinter.Render.String (renderString) import Spec.AuthorityToken qualified as AuthorityToken import Spec.Effect.GovernorMutation qualified as GovernorMutation import Spec.Effect.TreasuryWithdrawal qualified as TreasuryWithdrawal @@ -21,7 +23,7 @@ main = do I.writeFile "bench.csv" $ (decodeUtf8 . encodeDefaultOrderedByName) res - mapM_ (Prelude.putStrLn . (<> "\n") . show) res + mapM_ (putStrLn . renderString . layoutPretty defaultLayoutOptions . pretty) res where res = specificationTreeToBenchmarks $ From 53e48843c921dd65a04b4386dca19afab5a29666 Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Thu, 26 May 2022 09:53:41 -0500 Subject: [PATCH 15/15] bench update --- bench.csv | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/bench.csv b/bench.csv index bbfcfc8..ab8954d 100644 --- a/bench.csv +++ b/bench.csv @@ -2,22 +2,22 @@ name,cpu,mem,size Agora/Effects/Treasury Withdrawal Effect/effect/Simple,340268715,724428,3050 Agora/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ,570029812,1211300,3377 Agora/Effects/Treasury Withdrawal Effect/effect/Mixed Assets,502351827,1071087,3242 -Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,103054094,227264,7467 -Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,126696096,263635,3293 -Agora/Stake/policy/stakeCreation,147898986,329450,2265 -Agora/Stake/validator/stakeDepositWithdraw deposit,261845190,576377,3829 -Agora/Stake/validator/stakeDepositWithdraw withdraw,261845190,576377,3821 -Agora/Proposal/policy/proposalCreation,34571405,70066,1549 -Agora/Proposal/validator/cosignature/proposal,242652509,511783,5247 -Agora/Proposal/validator/cosignature/stake,183513647,395070,4366 -Agora/Proposal/validator/voting/proposal,240358004,492704,5255 -Agora/Proposal/validator/voting/stake,154841851,329311,4419 +Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,103651824,228328,7681 +Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,126986096,263635,3357 +Agora/Stake/policy/stakeCreation,60250773,128585,2144 +Agora/Stake/validator/stakeDepositWithdraw deposit,275919558,599033,4063 +Agora/Stake/validator/stakeDepositWithdraw withdraw,275919558,599033,4055 +Agora/Proposal/policy/proposalCreation,34571405,70066,1585 +Agora/Proposal/validator/cosignature/proposal,240007066,509127,4892 +Agora/Proposal/validator/cosignature/stake,185913543,402497,4600 +Agora/Proposal/validator/voting/proposal,238383906,489848,4900 +Agora/Proposal/validator/voting/stake,153804848,328239,4653 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 Agora/Treasury/Validator/Positive/Allows for effect changes,37343572,79744,1841 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,25177457,55883,806 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,40266637,88241,900 -Agora/Governor/policy/GST minting,57648280,119961,1836 -Agora/Governor/validator/proposal creation,309839049,649395,7994 -Agora/Governor/validator/GATs minting,429394828,928681,8113 -Agora/Governor/validator/mutate governor state,100243054,221538,7540 +Agora/Governor/policy/GST minting,57648280,119961,1851 +Agora/Governor/validator/proposal creation,329287002,679689,8196 +Agora/Governor/validator/GATs minting,430385143,929607,8319 +Agora/Governor/validator/mutate governor state,100840784,222602,7738