View on GitHub
File Changes
    , selfData
    , unroll
    , fix
+
    , fixAndType
    , fixN
+
    , fixNAndType
    , FunctionDef (..)
    , getMutualFixOf
+
    , getSingleFixOf
    ) where

                      
import           PlutusPrelude
--
-- See @plutus/runQuote $ docs/fomega/[email protected] for details.
fix :: TermLike term TyName Name => term ()
-
fix = runQuote $ do
+
fix = fst fixAndType
+

                      
+
fixAndType :: TermLike term TyName Name => (term (), Type TyName ())
+
fixAndType = runQuote $ do
    let RecursiveType self wrapSelf = selfData
    a <- freshTyName () "a"
    b <- freshTyName () "b"
    let funAB = TyFun () (TyVar () a) $ TyVar () b
        unrollFunAB = tyInst () unroll funAB
    let selfFunAB = TyApp () self funAB
-
    return
-
        . tyAbs () a (Type ())
-
        . tyAbs () b (Type ())
-
        . lamAbs () f (TyFun () funAB funAB)
-
        . apply () unrollFunAB
-
        . wrapSelf [funAB]
-
        . lamAbs () s selfFunAB
-
        . lamAbs () x (TyVar () a)
-
        $ mkIterApp () (var () f)
-
          [ apply () unrollFunAB $ var () s
-
          , var () x
-
          ]
+
    let fixTerm =
+
            tyAbs () a (Type ())
+
            . tyAbs () b (Type ())
+
            . lamAbs () f (TyFun () funAB funAB)
+
            . apply () unrollFunAB
+
            . wrapSelf [funAB]
+
            . lamAbs () s selfFunAB
+
            . lamAbs () x (TyVar () a)
+
            $ mkIterApp () (var () f)
+
            [ apply () unrollFunAB $ var () s
+
            , var () x
+
            ]
+
    let fixType =
+
            TyForall () a (Type ())
+
            . TyForall () b (Type ())
+
            $ TyFun () (TyFun () funAB funAB) funAB
+
    pure (fixTerm, fixType)
+

                      

                      
-- | A type that looks like a transformation.
--
        lamAbs () fr frTy $
        apply () (tyInst () inner (TyVar () r)) (var () fr)

                      
-
-- | Make a @[email protected] fixpoint combinator, along with its type.
+
-- | Make a @[email protected] fixpoint combinator.
--
-- > FixN n :
-- >     forall A1 B1 ... An Bn :: * .
-- >         (An -> Bn) ->
-- >         Q) ->
-- >     (forall R :: * . ((A1 -> B1) -> ... (An -> Bn) -> R) -> R)
-
fixN :: TermLike term TyName Name => Integer -> (term (), Type TyName ())
-
fixN n = runQuote $ do
+
fixN :: TermLike term TyName Name => Integer -> term ()
+
fixN n = fst (fixNAndType n)
+

                      
+
fixNAndType :: TermLike term TyName Name => Integer -> (term (), Type TyName ())
+
fixNAndType n = runQuote $ do
    -- the list of pairs of A and B types
    asbs <- replicateM (fromIntegral n) $ do
        a <- freshTyName () "a"
              ]
    pure (fixNTerm, fixNType)

                      
+
-- | Get the fixed-point of a single recursive function.
+
getSingleFixOf
+
    :: (TermLike term TyName Name)
+
    => ann -> term ann -> FunctionDef term TyName Name ann -> term ann
+
getSingleFixOf ann fix1 fun =
+
    let (FunctionDef _ _ (FunctionType _ dom cod) _) = fun
+
        instantiatedFix = mkIterInst ann fix1 [dom, cod]
+
        abstractedBody = mkIterLamAbs [functionDefVarDecl fun] $ _functionDefTerm fun
+
    in apply ann instantiatedFix abstractedBody
+

                      
-- | Get the fixed-point of a list of mutually recursive functions.
--
-- > MutualFixOf _ fixN [ FunctionDef _ fN1 (FunctionType _ a1 b1) f1
                  , plcTypeFile "Self"   $ _recursiveType selfData
                  , plcTermFile "Unroll" unroll
                  , plcTermFile "Fix"    fix
-
                  , plcTermFile "Fix2"   $ (fst $ fixN 2)
+
                  , plcTermFile "Fix2"   $ fixN 2
                  ]
              , treeFolderContents "Integer"
                  [ plcTermFile "SuccInteger" succInteger
import           Control.Lens.Indexed      (ifor, itraverse)
import           Data.Traversable

                      
-
-- | A Plutus Core tuple.
+
-- | A Plutus Core (Scott-encoded) tuple.
data Tuple term ann where
    Tuple :: TermLike term TyName Name =>
        { _tupleElementTypes :: [Type TyName ann] -- ^ The types of elements of a tuple.
    evenF <- FunctionDef () evenn (FunctionType () nat bool) <$> eoFunc true oddd
    oddF  <- FunctionDef () oddd  (FunctionType () nat bool) <$> eoFunc false evenn

                      
-
    getMutualFixOf () (fst $ fixN 2) [evenF, oddF]
+
    getMutualFixOf () (fixN 2) [evenF, oddF]

                      
even :: Term TyName Name ()
even = runQuote $ tupleTermAt () 0 evenAndOdd
            LamAbs () t listNat $
            Apply () (Var () evenn) (Var () t)

                      
-
    getMutualFixOf () (fst $ fixN 2) [evenF, oddF]
+
    getMutualFixOf () (fixN 2) [evenF, oddF]

                      
evenList :: Term TyName Name ()
evenList = runQuote $ tupleTermAt () 0 evenAndOddList
import           Control.Lens                           hiding (Strict)

                      
import           Data.List
+
import           Data.List.NonEmpty hiding (reverse, partition)

                      
{- Note [Extra definitions while compiling let-bindings]
The let-compiling passes can generate some additional definitions, so we use the
    binds <- forM bs $ \case
        TermBind _ Strict vd rhs -> pure $ PIR.Def vd rhs
        _ -> lift $ getEnclosing >>= \p -> throwing _Error $ CompilationError p "Internal error: type binding in term binding group"
-
    compileRecTerms body binds
+
    case nonEmpty binds of
+
        Just tbs -> compileRecTerms body tbs
+
        Nothing -> pure body
compileRecTermBindings _ body bs = lift $ getEnclosing >>= \p -> pure $ Let p Rec bs body

                      
compileRecTypeBindings :: Compiling m e a => LetKind -> PIRTerm a -> [Binding TyName Name (Provenance a)] -> m (PIRTerm a)
import           Control.Monad.Error.Lens
import           Control.Monad.Trans

                      
+
import           Data.List.NonEmpty hiding (length)
+

                      
import qualified Language.PlutusCore                        as PLC
import qualified Language.PlutusCore.MkPlc                  as PLC
import           Language.PlutusCore.Quote
compileRecTerms
    :: Compiling m e a
    => PIRTerm a
-
    -> [TermDef TyName Name (Provenance a)]
+
    -> NonEmpty (TermDef TyName Name (Provenance a))
    -> DefT SharedName (Provenance a) m (PIRTerm a)
compileRecTerms body bs = do
    p <- lift getEnclosing
    fixpoint <- mkFixpoint bs
-
    Tuple.bindTuple p (PIR.varDeclName . PIR.defVar <$> bs) fixpoint body
+
    Tuple.bindTuple p (PIR.varDeclName . PIR.defVar <$> toList bs) fixpoint body

                      
-- | Given a list of var decls, create a tuples of values that computes their mutually recursive fixpoint.
mkFixpoint
    :: forall m e a . Compiling m e a
-
    => [TermDef TyName Name (Provenance a)]
+
    => NonEmpty (TermDef TyName Name (Provenance a))
    -> DefT SharedName (Provenance a) m (Tuple.Tuple (Term TyName Name) (Provenance a))
mkFixpoint bs = do
    p0 <- lift getEnclosing
            Just f -> pure f
            Nothing -> do
                name <- liftQuote $ toProgramName key
-
                let (fixNTerm, fixNType) = Function.fixN arity
+
                let (fixNTerm, fixNType) = if arity == 1 then Function.fixAndType else Function.fixNAndType arity
                    var :: PLC.VarDecl TyName Name (Provenance a)
                    var = PLC.VarDecl NoProvenance (NoProvenance <$ name) (NoProvenance <$ fixNType)
                defineTerm key (PLC.Def var (NoProvenance <$ fixNTerm, Strict)) mempty

                      
                pure $ PIR.mkVar p0 var

                      
-
    liftQuote $ Function.getMutualFixOf p0 fixN funs
+
    liftQuote $ case funs of
+
        f :| [] -> Tuple.getSpineToTuple p0 [(PLC.functionDefToType f, Function.getSingleFixOf p0 fixN f)]
+
        f :| fs -> Function.getMutualFixOf p0 fixN (f:fs)
recursion = testNested "recursion"
    [ goldenPlcFromPir term "even3"
    , goldenEvalPir term "even3Eval"
+
    , goldenPlcFromPir term "stupidZero"
    , goldenPlcFromPir term "mutuallyRecursiveValues"
    ]

                      
+
(let (rec)
+
  (datatypebind (datatype
+
      (tyvardecl Nat (type))
+
      -- no arguments
+
      match_Nat
+
      (vardecl Zero Nat)
+
      (vardecl Suc (fun Nat Nat))))
+
(let (nonrec)
+
  (termbind (strict) (vardecl three Nat)
+
      [Suc [Suc [Suc Zero]]])
+
(let (rec)
+
  (termbind (strict) (vardecl stupidZero (fun Nat Nat))
+
      (lam n Nat
+
        [{[match_Nat n] Nat} Zero (lam pred Nat [stupidZero pred])]))
+
  [stupidZero three]
+
)
+
)
+
)
+
)
+
(program 1.0.0
+
  [
+
    (lam
+
      fix1_i0
+
      (all a_i0 (type) (all b_i0 (type) (fun (fun (fun a_i2 b_i1) (fun a_i2 b_i1)) (fun a_i2 b_i1))))
+
      [
+
        [
+
          [
+
            {
+
              (abs
+
                Nat_i0
+
                (type)
+
                (lam
+
                  Zero_i0
+
                  Nat_i2
+
                  (lam
+
                    Suc_i0
+
                    (fun Nat_i3 Nat_i3)
+
                    (lam
+
                      match_Nat_i0
+
                      (fun Nat_i4 (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i5 out_Nat_i1) out_Nat_i1))))
+
                      [
+
                        (lam
+
                          three_i0
+
                          Nat_i5
+
                          [
+
                            (lam
+
                              tup_i0
+
                              (all r_i0 (type) (fun (fun (fun Nat_i7 Nat_i7) r_i1) r_i1))
+
                              [
+
                                (lam
+
                                  stupidZero_i0
+
                                  (fun Nat_i7 Nat_i7)
+
                                  [ stupidZero_i1 three_i3 ]
+
                                )
+
                                [
+
                                  { tup_i1 (fun Nat_i6 Nat_i6) }
+
                                  (lam arg_0_i0 (fun Nat_i7 Nat_i7) arg_0_i1)
+
                                ]
+
                              ]
+
                            )
+
                            (abs
+
                              r_i0
+
                              (type)
+
                              (lam
+
                                f_i0
+
                                (fun (fun Nat_i7 Nat_i7) r_i2)
+
                                [
+
                                  f_i1
+
                                  [
+
                                    { { fix1_i8 Nat_i7 } Nat_i7 }
+
                                    (lam
+
                                      stupidZero_i0
+
                                      (fun Nat_i8 Nat_i8)
+
                                      (lam
+
                                        n_i0
+
                                        Nat_i9
+
                                        [
+
                                          [
+
                                            { [ match_Nat_i6 n_i1 ] Nat_i9 }
+
                                            Zero_i8
+
                                          ]
+
                                          (lam
+
                                            pred_i0
+
                                            Nat_i10
+
                                            [ stupidZero_i3 pred_i1 ]
+
                                          )
+
                                        ]
+
                                      )
+
                                    )
+
                                  ]
+
                                ]
+
                              )
+
                            )
+
                          ]
+
                        )
+
                        [ Suc_i2 [ Suc_i2 [ Suc_i2 Zero_i3 ] ] ]
+
                      ]
+
                    )
+
                  )
+
                )
+
              )
+
              (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1)))))
+
            }
+
            (iwrap
+
              (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]]))
+
              (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))
+
              (abs
+
                out_Nat_i0
+
                (type)
+
                (lam
+
                  case_Zero_i0
+
                  out_Nat_i2
+
                  (lam
+
                    case_Suc_i0
+
                    (fun (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))) out_Nat_i3)
+
                    case_Zero_i2
+
                  )
+
                )
+
              )
+
            )
+
          ]
+
          (lam
+
            arg_0_i0
+
            (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1)))))
+
            (iwrap
+
              (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]]))
+
              (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))
+
              (abs
+
                out_Nat_i0
+
                (type)
+
                (lam
+
                  case_Zero_i0
+
                  out_Nat_i2
+
                  (lam
+
                    case_Suc_i0
+
                    (fun (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1))))) out_Nat_i3)
+
                    [ case_Suc_i1 arg_0_i4 ]
+
                  )
+
                )
+
              )
+
            )
+
          )
+
        ]
+
        (lam
+
          x_i0
+
          (ifix (lam rec_i0 (fun (fun (type) (type)) (type)) (lam f_i0 (fun (type) (type)) [f_i1 [rec_i2 f_i1]])) (lam Nat_i0 (type) (all out_Nat_i0 (type) (fun out_Nat_i1 (fun (fun Nat_i2 out_Nat_i1) out_Nat_i1)))))
+
          (unwrap x_i1)
+
        )
+
      ]
+
    )
+
    (abs
+
      a_i0
+
      (type)
+
      (abs
+
        b_i0
+
        (type)
+
        (lam
+
          f_i0
+
          (fun (fun a_i3 b_i2) (fun a_i3 b_i2))
+
          [
+
            {
+
              (abs
+
                a_i0
+
                (type)
+
                (lam
+
                  s_i0
+
                  [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
+
                  [ (unwrap s_i1) s_i1 ]
+
                )
+
              )
+
              (fun a_i3 b_i2)
+
            }
+
            (iwrap
+
              (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1)))
+
              (fun a_i3 b_i2)
+
              (lam
+
                s_i0
+
                [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) (fun a_i4 b_i3)]
+
                (lam
+
                  x_i0
+
                  a_i5
+
                  [
+
                    [
+
                      f_i3
+
                      [
+
                        {
+
                          (abs
+
                            a_i0
+
                            (type)
+
                            (lam
+
                              s_i0
+
                              [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
+
                              [ (unwrap s_i1) s_i1 ]
+
                            )
+
                          )
+
                          (fun a_i5 b_i4)
+
                        }
+
                        s_i2
+
                      ]
+
                    ]
+
                    x_i1
+
                  ]
+
                )
+
              )
+
            )
+
          ]
+
        )
+
      )
+
    )
+
  ]
+
)
\ No newline at end of file
  [
    (lam
      fix1_i0
-
      (all a_i0 (type) (all b_i0 (type) (fun (all Q_i0 (type) (fun (fun (fun a_i3 b_i2) Q_i1) (fun (fun a_i3 b_i2) Q_i1))) (all R_i0 (type) (fun (fun (fun a_i3 b_i2) R_i1) R_i1)))))
+
      (all a_i0 (type) (all b_i0 (type) (fun (fun (fun a_i2 b_i1) (fun a_i2 b_i1)) (fun a_i2 b_i1))))
      [
        [
          {
                                                            ]
                                                          ]
                                                        )
-
                                                        [
-
                                                          {
-
                                                            {
-
                                                              fix1_i13
-
                                                              EmptyRose_i5
-
                                                            }
-
                                                            EmptyRose_i5
-
                                                          }
-
                                                          (abs
-
                                                            Q_i0
-
                                                            (type)
-
                                                            (lam
-
                                                              choose_i0
-
                                                              (fun (fun EmptyRose_i7 EmptyRose_i7) Q_i2)
-
                                                              (lam
-
                                                                go_i0
-
                                                                (fun EmptyRose_i8 EmptyRose_i8)
-
                                                                [
-
                                                                  choose_i2
+
                                                        (abs
+
                                                          r_i0
+
                                                          (type)
+
                                                          (lam
+
                                                            f_i0
+
                                                            (fun (fun EmptyRose_i7 EmptyRose_i7) r_i2)
+
                                                            [
+
                                                              f_i1
+
                                                              [
+
                                                                {
+
                                                                  {
+
                                                                    fix1_i15
+
                                                                    EmptyRose_i7
+
                                                                  }
+
                                                                  EmptyRose_i7
+
                                                                }
+
                                                                (lam
+
                                                                  go_i0
+
                                                                  (fun EmptyRose_i8 EmptyRose_i8)
                                                                  (lam
                                                                    x_i0
                                                                    EmptyRose_i9
                                                                      ]
                                                                    ]
                                                                  )
-
                                                                ]
-
                                                              )
-
                                                            )
+
                                                                )
+
                                                              ]
+
                                                            ]
                                                          )
-
                                                        ]
+
                                                        )
                                                      ]
                                                    )
                                                    [
                                                    ]
                                                  ]
                                                )
-
                                                [
-
                                                  {
-
                                                    {
-
                                                      fix1_i11
-
                                                      (fun EmptyRose_i3 EmptyRose_i3)
-
                                                    }
-
                                                    (fun [List_i7 EmptyRose_i3] [List_i7 EmptyRose_i3])
-
                                                  }
-
                                                  (abs
-
                                                    Q_i0
-
                                                    (type)
-
                                                    (lam
-
                                                      choose_i0
-
                                                      (fun (fun (fun EmptyRose_i5 EmptyRose_i5) (fun [List_i9 EmptyRose_i5] [List_i9 EmptyRose_i5])) Q_i2)
-
                                                      (lam
-
                                                        map_i0
-
                                                        (fun (fun EmptyRose_i6 EmptyRose_i6) (fun [List_i10 EmptyRose_i6] [List_i10 EmptyRose_i6]))
-
                                                        [
-
                                                          choose_i2
+
                                                (abs
+
                                                  r_i0
+
                                                  (type)
+
                                                  (lam
+
                                                    f_i0
+
                                                    (fun (fun (fun EmptyRose_i5 EmptyRose_i5) (fun [List_i9 EmptyRose_i5] [List_i9 EmptyRose_i5])) r_i2)
+
                                                    [
+
                                                      f_i1
+
                                                      [
+
                                                        {
+
                                                          {
+
                                                            fix1_i13
+
                                                            (fun EmptyRose_i5 EmptyRose_i5)
+
                                                          }
+
                                                          (fun [List_i9 EmptyRose_i5] [List_i9 EmptyRose_i5])
+
                                                        }
+
                                                        (lam
+
                                                          map_i0
+
                                                          (fun (fun EmptyRose_i6 EmptyRose_i6) (fun [List_i10 EmptyRose_i6] [List_i10 EmptyRose_i6]))
                                                          (lam
                                                            ds_i0
                                                            (fun EmptyRose_i7 EmptyRose_i7)
                                                              ]
                                                            )
                                                          )
-
                                                        ]
-
                                                      )
-
                                                    )
+
                                                        )
+
                                                      ]
+
                                                    ]
                                                  )
-
                                                ]
+
                                                )
                                              ]
                                            )
                                          )
        (type)
        (lam
          f_i0
-
          (all Q_i0 (type) (fun (fun (fun a_i4 b_i3) Q_i1) (fun (fun a_i4 b_i3) Q_i1)))
+
          (fun (fun a_i3 b_i2) (fun a_i3 b_i2))
          [
-
            [
-
              {
-
                (abs
-
                  F_i0
-
                  (fun (type) (type))
-
                  (lam
-
                    by_i0
-
                    (fun (all Q_i0 (type) (fun [F_i3 Q_i1] Q_i1)) (all Q_i0 (type) (fun [F_i3 Q_i1] Q_i1)))
+
            {
+
              (abs
+
                a_i0
+
                (type)
+
                (lam
+
                  s_i0
+
                  [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
+
                  [ (unwrap s_i1) s_i1 ]
+
                )
+
              )
+
              (fun a_i3 b_i2)
+
            }
+
            (iwrap
+
              (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1)))
+
              (fun a_i3 b_i2)
+
              (lam
+
                s_i0
+
                [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) (fun a_i4 b_i3)]
+
                (lam
+
                  x_i0
+
                  a_i5
+
                  [
                    [
-
                      {
+
                      f_i3
+
                      [
                        {
                          (abs
                            a_i0
                            (type)
-
                            (abs
-
                              b_i0
-
                              (type)
-
                              (lam
-
                                f_i0
-
                                (fun (fun a_i3 b_i2) (fun a_i3 b_i2))
-
                                [
-
                                  {
-
                                    (abs
-
                                      a_i0
-
                                      (type)
-
                                      (lam
-
                                        s_i0
-
                                        [(lam a_i0 (type) (ifix (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1))) a_i1)) a_i2]
-
                                        [ (unwrap s_i1) s_i1 ]
-
                                      )
-
                                    )
-
                                    (fun a_i3 b_i2)
-
                                  }
-
                                  (iwrap
-
                                    (lam self_i0 (fun (type) (type)) (lam a_i0 (type) (fun [self_i2 a_i1] a_i1)))
-
                                    (fun a_i3 b_i2)
-
                                    (lam
-
                                      s_i0
(iwrap
-
  (lam rec_98 (fun (fun (type) (type)) (type)) (lam f_99 (fun (type) (type)) [f_99 [rec_98 f_99]]))
-
  (lam EmptyRose_100 (type) (all out_EmptyRose_101 (type) (fun (fun [List_55 EmptyRose_100] out_EmptyRose_101) out_EmptyRose_101)))
+
  (lam rec_70 (fun (fun (type) (type)) (type)) (lam f_71 (fun (type) (type)) [f_71 [rec_70 f_71]]))
+
  (lam EmptyRose_72 (type) (all out_EmptyRose_73 (type) (fun (fun [List_27 EmptyRose_72] out_EmptyRose_73) out_EmptyRose_73)))
  (abs
-
    out_EmptyRose_102
+
    out_EmptyRose_74
    (type)
    (lam
-
      case_EmptyRose_103
-
      (fun [List_55 (ifix (lam rec_104 (fun (fun (type) (type)) (type)) (lam f_105 (fun (type) (type)) [f_105 [rec_104 f_105]])) (lam EmptyRose_106 (type) (all out_EmptyRose_107 (type) (fun (fun [List_55 EmptyRose_106] out_EmptyRose_107) out_EmptyRose_107))))] out_EmptyRose_102)
+
      case_EmptyRose_75
+
      (fun [List_27 (ifix (lam rec_76 (fun (fun (type) (type)) (type)) (lam f_77 (fun (type) (type)) [f_77 [rec_76 f_77]])) (lam EmptyRose_78 (type) (all out_EmptyRose_79 (type) (fun (fun [List_27 EmptyRose_78] out_EmptyRose_79) out_EmptyRose_79))))] out_EmptyRose_74)
      [
-
        case_EmptyRose_103
+
        case_EmptyRose_75
        (iwrap
-
          (lam List_135 (fun (type) (type)) (lam a_136 (type) (all out_List_137 (type) (fun out_List_137 (fun (fun a_136 (fun [List_135 a_136] out_List_137)) out_List_137)))))
-
          a_128
+
          (lam List_107 (fun (type) (type)) (lam a_108 (type) (all out_List_109 (type) (fun out_List_109 (fun (fun a_108 (fun [List_107 a_108] out_List_109)) out_List_109)))))
+
          a_100
          (abs
-
            out_List_138
+
            out_List_110
            (type)
            (lam
-
              case_Nil_139
-
              out_List_138
+
              case_Nil_111
+
              out_List_110
              (lam
-
                case_Cons_140
-
                (fun a_128 (fun [(lam a_141 (type) (ifix (lam List_142 (fun (type) (type)) (lam a_143 (type) (all out_List_144 (type) (fun out_List_144 (fun (fun a_143 (fun [List_142 a_143] out_List_144)) out_List_144))))) a_141)) a_128] out_List_138))
+
                case_Cons_112
+
                (fun a_100 (fun [(lam a_113 (type) (ifix (lam List_114 (fun (type) (type)) (lam a_115 (type) (all out_List_116 (type) (fun out_List_116 (fun (fun a_115 (fun [List_114 a_115] out_List_116)) out_List_116))))) a_113)) a_100] out_List_110))
                [
                  [
-
                    case_Cons_140
+
                    case_Cons_112
                    (iwrap
-
                      (lam rec_98 (fun (fun (type) (type)) (type)) (lam f_99 (fun (type) (type)) [f_99 [rec_98 f_99]]))
-
                      (lam EmptyRose_100 (type) (all out_EmptyRose_101 (type) (fun (fun [List_55 EmptyRose_100] out_EmptyRose_101) out_EmptyRose_101)))
+
                      (lam rec_70 (fun (fun (type) (type)) (type)) (lam f_71 (fun (type) (type)) [f_71 [rec_70 f_71]]))
+
                      (lam EmptyRose_72 (type) (all out_EmptyRose_73 (type) (fun (fun [List_27 EmptyRose_72] out_EmptyRose_73) out_EmptyRose_73)))
                      (abs
-
                        out_EmptyRose_102
+
                        out_EmptyRose_74
                        (type)
                        (lam
-
                          case_EmptyRose_103
-
                          (fun [List_55 (ifix (lam rec_104 (fun (fun (type) (type)) (type)) (lam f_105 (fun (type) (type)) [f_105 [rec_104 f_105]])) (lam EmptyRose_106 (type) (all out_EmptyRose_107 (type) (fun (fun [List_55 EmptyRose_106] out_EmptyRose_107) out_EmptyRose_107))))] out_EmptyRose_102)
+
                          case_EmptyRose_75
+
                          (fun [List_27 (ifix (lam rec_76 (fun (fun (type) (type)) (type)) (lam f_77 (fun (type) (type)) [f_77 [rec_76 f_77]])) (lam EmptyRose_78 (type) (all out_EmptyRose_79 (type) (fun (fun [List_27 EmptyRose_78] out_EmptyRose_79) out_EmptyRose_79))))] out_EmptyRose_74)
                          [
-
                            case_EmptyRose_103
+
                            case_EmptyRose_75
                            (iwrap
-
                              (lam List_118 (fun (type) (type)) (lam a_119 (type) (all out_List_120 (type) (fun out_List_120 (fun (fun a_119 (fun [List_118 a_119] out_List_120)) out_List_120)))))
-
                              a_117
+
                              (lam List_90 (fun (type) (type)) (lam a_91 (type) (all out_List_92 (type) (fun out_List_92 (fun (fun a_91 (fun [List_90 a_91] out_List_92)) out_List_92)))))
+
                              a_89
                              (abs
-
                                out_List_121
+
                                out_List_93
                                (type)
                                (lam
-
                                  case_Nil_122
-
                                  out_List_121
+
                                  case_Nil_94
+
                                  out_List_93
                                  (lam
-
                                    case_Cons_123
-
                                    (fun a_117 (fun [(lam a_124 (type) (ifix (lam List_125 (fun (type) (type)) (lam a_126 (type) (all out_List_127 (type) (fun out_List_127 (fun (fun a_126 (fun [List_125 a_126] out_List_127)) out_List_127))))) a_124)) a_117] out_List_121))
-
                                    case_Nil_122
+
                                    case_Cons_95
+
                                    (fun a_89 (fun [(lam a_96 (type) (ifix (lam List_97 (fun (type) (type)) (lam a_98 (type) (all out_List_99 (type) (fun out_List_99 (fun (fun a_98 (fun [List_97 a_98] out_List_99)) out_List_99))))) a_96)) a_89] out_List_93))
+
                                    case_Nil_94
                                  )
                                )
                              )
                    )
                  ]
                  (iwrap
-
                    (lam List_135 (fun (type) (type)) (lam a_136 (type) (all out_List_137 (type) (fun out_List_137 (fun (fun a_136 (fun [List_135 a_136] out_List_137)) out_List_137)))))
-
                    a_128
+
                    (lam List_107 (fun (type) (type)) (lam a_108 (type) (all out_List_109 (type) (fun out_List_109 (fun (fun a_108 (fun [List_107 a_108] out_List_109)) out_List_109)))))
+
                    a_100
                    (abs
-
                      out_List_138
+
                      out_List_110
                      (type)
                      (lam
-
                        case_Nil_139
-
                        out_List_138
+
                        case_Nil_111
+
                        out_List_110
                        (lam
-
                          case_Cons_140
-
                          (fun a_128 (fun [(lam a_141 (type) (ifix (lam List_142 (fun (type) (type)) (lam a_143 (type) (all out_List_144 (type) (fun out_List_144 (fun (fun a_143 (fun [List_142 a_143] out_List_144)) out_List_144))))) a_141)) a_128] out_List_138))
+
                          case_Cons_112
+
                          (fun a_100 (fun [(lam a_113 (type) (ifix (lam List_114 (fun (type) (type)) (lam a_115 (type) (all out_List_116 (type) (fun out_List_116 (fun (fun a_115 (fun [List_114 a_115] out_List_116)) out_List_116))))) a_113)) a_100] out_List_110))
                          [
                            [
-
                              case_Cons_140
+
                              case_Cons_112
                              (iwrap
-
                                (lam rec_98 (fun (fun (type) (type)) (type)) (lam f_99 (fun (type) (type)) [f_99 [rec_98 f_99]]))
-
                                (lam EmptyRose_100 (type) (all out_EmptyRose_101 (type) (fun (fun [List_55 EmptyRose_100] out_EmptyRose_101) out_EmptyRose_101)))
+
                                (lam rec_70 (fun (fun (type) (type)) (type)) (lam f_71 (fun (type) (type)) [f_71 [rec_70 f_71]]))
+
                                (lam EmptyRose_72 (type) (all out_EmptyRose_73 (type) (fun (fun [List_27 EmptyRose_72] out_EmptyRose_73) out_EmptyRose_73)))
                                (abs
-
                                  out_EmptyRose_102
+
                                  out_EmptyRose_74
                                  (type)
                                  (lam
-
                                    case_EmptyRose_103
-
                                    (fun [List_55 (ifix (lam rec_104 (fun (fun (type) (type)) (type)) (lam f_105 (fun (type) (type)) [f_105 [rec_104 f_105]])) (lam EmptyRose_106 (type) (all out_EmptyRose_107 (type) (fun (fun [List_55 EmptyRose_106] out_EmptyRose_107) out_EmptyRose_107))))] out_EmptyRose_102)
+
                                    case_EmptyRose_75
+
                                    (fun [List_27 (ifix (lam rec_76 (fun (fun (type) (type)) (type)) (lam f_77 (fun (type) (type)) [f_77 [rec_76 f_77]])) (lam EmptyRose_78 (type) (all out_EmptyRose_79 (type) (fun (fun [List_27 EmptyRose_78] out_EmptyRose_79) out_EmptyRose_79))))] out_EmptyRose_74)
                                    [
-
                                      case_EmptyRose_103
+
                                      case_EmptyRose_75
                                      (iwrap
-
                                        (lam List_118 (fun (type) (type)) (lam a_119 (type) (all out_List_120 (type) (fun out_List_120 (fun (fun a_119 (fun [List_118 a_119] out_List_120)) out_List_120)))))
-
                                        a_117
+
                                        (lam List_90 (fun (type) (type)) (lam a_91 (type) (all out_List_92 (type) (fun out_List_92 (fun (fun a_91 (fun [List_90 a_91] out_List_92)) out_List_92)))))
+
                                        a_89
                                        (abs
-
                                          out_List_121
+
                                          out_List_93
                                          (type)
                                          (lam
-
                                            case_Nil_122
-
                                            out_List_121
+
                                            case_Nil_94
+
                                            out_List_93
                                            (lam
-
                                              case_Cons_123
-
                                              (fun a_117 (fun [(lam a_124 (type) (ifix (lam List_125 (fun (type) (type)) (lam a_126 (type) (all out_List_127 (type) (fun out_List_127 (fun (fun a_126 (fun [List_125 a_126] out_List_127)) out_List_127))))) a_124)) a_117] out_List_121))
-
                                              case_Nil_122
+
                                              case_Cons_95
+
                                              (fun a_89 (fun [(lam a_96 (type) (ifix (lam List_97 (fun (type) (type)) (lam a_98 (type) (all out_List_99 (type) (fun out_List_99 (fun (fun a_98 (fun [List_97 a_98] out_List_99)) out_List_99))))) a_96)) a_89] out_List_93))
+
                                              case_Nil_94
                                            )
                                          )
                                        )
                              )
                            ]
                            (iwrap
-
                              (lam List_118 (fun (type) (type)) (lam a_119 (type) (all out_List_120 (type) (fun out_List_120 (fun (fun a_119 (fun [List_118 a_119] out_List_120)) out_List_120)))))
-
                              a_117
+
                              (lam List_90 (fun (type) (type)) (lam a_91 (type) (all out_List_92 (type) (fun out_List_92 (fun (fun a_91 (fun [List_90 a_91] out_List_92)) out_List_92)))))
+
                              a_89
                              (abs
-
                                out_List_121
+
                                out_List_93
                                (type)
                                (lam
-
                                  case_Nil_122
-
                                  out_List_121
+
                                  case_Nil_94
+
                                  out_List_93
                                  (lam
-
                                    case_Cons_123
-
                                    (fun a_117 (fun [(lam a_124 (type) (ifix (lam List_125 (fun (type) (type)) (lam a_126 (type) (all out_List_127 (type) (fun out_List_127 (fun (fun a_126 (fun [List_125 a_126] out_List_127)) out_List_127))))) a_124)) a_117] out_List_121))
-
                                    case_Nil_122
+
                                    case_Cons_95
+
                                    (fun a_89 (fun [(lam a_96 (type) (ifix (lam List_97 (fun (type) (type)) (lam a_98 (type) (all out_List_99 (type) (fun out_List_99 (fun (fun a_98 (fun [List_97 a_98] out_List_99)) out_List_99))))) a_96)) a_89] out_List_93))
+
                                    case_Nil_94
                                  )
                                )
                              )
(abs
-
  out_Bool_90
+
  out_Bool_62
  (type)
-
  (lam case_True_91 out_Bool_90 (lam case_False_92 out_Bool_90 case_False_92))
+
  (lam case_True_63 out_Bool_62 (lam case_False_64 out_Bool_62 case_False_64))
)
\ No newline at end of file
(abs
-
  out_Bool_87
+
  out_Bool_59
  (type)
-
  (lam case_True_88 out_Bool_87 (lam case_False_89 out_Bool_87 case_True_88))
+
  (lam case_True_60 out_Bool_59 (lam case_False_61 out_Bool_59 case_True_60))
)
\ No newline at end of file
(abs
-
  out_Bool_173
+
  out_Bool_145
  (type)
  (lam
-
    case_True_174 out_Bool_173 (lam case_False_175 out_Bool_173 case_True_174)
+
    case_True_146 out_Bool_145 (lam case_False_147 out_Bool_145 case_True_146)
  )
)
\ No newline at end of file
    - {slot:
       Slot: 27}
    - {utxo-at:
-
       Utxo at ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 =
-
         12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c!1: PayToScript: 4c592448cff8d2b2ee40a509e1d5224260ef29f5b22cd920616e39cad65f466c Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}}
-
         40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde!1: PayToScript: b8324180800f57f26dee2ad65990e0a762a5dab9424d32e49855abd495f7196b Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}
-
         60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884!1: PayToScript: 49cd69a6941f191e3d14ce83834e0f2ce175318995b40380854e3201171c0baa Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}}
+
       Utxo at ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4 =
+
         2b53d1300e372a9cb617d14015dac2b6fee75b9186ebe3daa3d3301ed6cbbb90!1: PayToScript: 49cd69a6941f191e3d14ce83834e0f2ce175318995b40380854e3201171c0baa Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}
+
         6a2179fcc90065e6bb033c4067dc5f2b5927bc7dcac8891015e41e2d537293e5!1: PayToScript: b8324180800f57f26dee2ad65990e0a762a5dab9424d32e49855abd495f7196b Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}
+
         fdd6fcc6054cd4bb154a12fd8a669c81c03f7a0c495f829ad2665ae3c0b2d02e!1: PayToScript: 4c592448cff8d2b2ee40a509e1d5224260ef29f5b22cd920616e39cad65f466c Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}}}
    - {tx:
-
       WriteTxSuccess: 5c8ca315e659ca58b2a25db294e26c9b357e059056ea55891de4d42e407115a3}
+
       WriteTxSuccess: 8f9157794578db2e1588de27ff32829d6c0cae52d90bb49747662e95574d8559}
  Events for W2:
    - {contribute:
       EndpointValue: Contribution {contribValue = Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}}}}
    - {own-pubkey:
       fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025}
    - {tx:
-
       WriteTxSuccess: 40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde}
+
       WriteTxSuccess: 6a2179fcc90065e6bb033c4067dc5f2b5927bc7dcac8891015e41e2d537293e5}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde:
+
       ( ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
+
       , Tx 6a2179fcc90065e6bb033c4067dc5f2b5927bc7dcac8891015e41e2d537293e5:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!8
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9990)]})]}} addressed to
             PubKeyAddress: 03d200a81ee0feace8fb845e5ec950a6f9add83709244f7b81134654139f41a4
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
         signatures:
           fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025
         validity range: Interval {ivFrom = LowerBound (Finite (Slot {getSlot = 1})) True, ivTo = UpperBound (Finite (Slot {getSlot = 20})) True}} )}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884:
+
       ( ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
+
       , Tx 2b53d1300e372a9cb617d14015dac2b6fee75b9186ebe3daa3d3301ed6cbbb90:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!3
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9990)]})]}} addressed to
             PubKeyAddress: feb345e86b9c2a7add2bfc695fa8aecd4ac5b0dfaf3a477f6fa968cdd30571c7
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
         signatures:
           98a5e3a36e67aaba89888bf093de1ad963e774013b3902bfab356d8b90178a63
         validity range: Interval {ivFrom = LowerBound (Finite (Slot {getSlot = 1})) True, ivTo = UpperBound (Finite (Slot {getSlot = 20})) True}} )}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c:
+
       ( ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
+
       , Tx fdd6fcc6054cd4bb154a12fd8a669c81c03f7a0c495f829ad2665ae3c0b2d02e:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!7
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9999)]})]}} addressed to
             PubKeyAddress: 5aebc31421e7af1bdb47326709c27f3fd9381b00b0aca127b8dccd5f8525a538
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
    - {own-pubkey:
       98a5e3a36e67aaba89888bf093de1ad963e774013b3902bfab356d8b90178a63}
    - {tx:
-
       WriteTxSuccess: 60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884}
+
       WriteTxSuccess: 2b53d1300e372a9cb617d14015dac2b6fee75b9186ebe3daa3d3301ed6cbbb90}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884:
+
       ( ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
+
       , Tx 2b53d1300e372a9cb617d14015dac2b6fee75b9186ebe3daa3d3301ed6cbbb90:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!3
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9990)]})]}} addressed to
             PubKeyAddress: feb345e86b9c2a7add2bfc695fa8aecd4ac5b0dfaf3a477f6fa968cdd30571c7
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,10)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
         signatures:
           98a5e3a36e67aaba89888bf093de1ad963e774013b3902bfab356d8b90178a63
         validity range: Interval {ivFrom = LowerBound (Finite (Slot {getSlot = 1})) True, ivTo = UpperBound (Finite (Slot {getSlot = 20})) True}} )}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c:
+
       ( ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
+
       , Tx fdd6fcc6054cd4bb154a12fd8a669c81c03f7a0c495f829ad2665ae3c0b2d02e:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!7
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9999)]})]}} addressed to
             PubKeyAddress: 5aebc31421e7af1bdb47326709c27f3fd9381b00b0aca127b8dccd5f8525a538
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
    - {own-pubkey:
       f81fb54a825fced95eb033afcd64314075abfb0abd20a970892503436f34b863}
    - {tx:
-
       WriteTxSuccess: 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c}
+
       WriteTxSuccess: fdd6fcc6054cd4bb154a12fd8a669c81c03f7a0c495f829ad2665ae3c0b2d02e}
    - {address:
-
       ( ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
-
       , Tx 12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c:
+
       ( ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
+
       , Tx fdd6fcc6054cd4bb154a12fd8a669c81c03f7a0c495f829ad2665ae3c0b2d02e:
         {inputs:
            - baaf580880e12f5f48fc8a956b83a3706a4ead8df2a09836ef6a262662ca95d7!7
         outputs:
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,9999)]})]}} addressed to
             PubKeyAddress: 5aebc31421e7af1bdb47326709c27f3fd9381b00b0aca127b8dccd5f8525a538
           - Value {getValue = Map {unMap = [(,Map {unMap = [(,1)]})]}} addressed to
-
             ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
             ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
         forge: Value {getValue = Map {unMap = []}}
         fee: Value {getValue = Map {unMap = []}}
         mps:
      Done
    Wallet: W2
      Running, waiting for input:
-
        {address: [ ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 ]
+
        {address: [ ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4 ]
         contribute: []
         own-pubkey: NotWaitingForPubKey
         schedule collection: [ExposeEndpoint: schedule collection]
         utxo-at: []}
    Wallet: W3
      Running, waiting for input:
-
        {address: [ ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 ]
+
        {address: [ ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4 ]
         contribute: []
         own-pubkey: NotWaitingForPubKey
         schedule collection: [ExposeEndpoint: schedule collection]
         utxo-at: []}
    Wallet: W4
      Running, waiting for input:
-
        {address: [ ScriptAddress: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69 ]
+
        {address: [ ScriptAddress: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4 ]
         contribute: []
         own-pubkey: NotWaitingForPubKey
         schedule collection: [ExposeEndpoint: schedule collection]
    Ada:      Lovelace:  10000

                      
==== Slot #2, Tx #0 ====
-
TxId:       40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde
+
TxId:       6a2179fcc90065e6bb033c4067dc5f2b5927bc7dcac8891015e41e2d537293e5
Fee:        -
Forge:      -
Signatures  PubKey: fc51cd8e6218a1a38da47ed00230f0580816ed13...
-
              Signature: 5f58204370a267b70794da50c9eaac3853c3a5b5...
+
              Signature: 5f5820a4be4aa1bbc414e6bc0f06e79410702cfc...
Inputs:
  ---- Input 0 ----
  Destination:  PubKeyHash: 03d200a81ee0feace8fb845e5ec950a6f9add837... (Wallet 2)
    Ada:      Lovelace:  9990
  
  ---- Output 1 ----
-
  Destination:  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Destination:  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  10

                      
  Value:
    Ada:      Lovelace:  10000
  
-
  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  10

                      
==== Slot #3, Tx #0 ====
-
TxId:       60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884
+
TxId:       2b53d1300e372a9cb617d14015dac2b6fee75b9186ebe3daa3d3301ed6cbbb90
Fee:        -
Forge:      -
Signatures  PubKey: 98a5e3a36e67aaba89888bf093de1ad963e77401...
-
              Signature: 5f5820294fe22988a26d5071cf1fcc74f26b0035...
+
              Signature: 5f5820f8b07cfe1e333747ddafa110db9b12ac21...
Inputs:
  ---- Input 0 ----
  Destination:  PubKeyHash: feb345e86b9c2a7add2bfc695fa8aecd4ac5b0df... (Wallet 3)
    Ada:      Lovelace:  9990
  
  ---- Output 1 ----
-
  Destination:  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Destination:  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  10

                      
  Value:
    Ada:      Lovelace:  9990
  
-
  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  20

                      
==== Slot #4, Tx #0 ====
-
TxId:       12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c
+
TxId:       fdd6fcc6054cd4bb154a12fd8a669c81c03f7a0c495f829ad2665ae3c0b2d02e
Fee:        -
Forge:      -
Signatures  PubKey: f81fb54a825fced95eb033afcd64314075abfb0a...
-
              Signature: 5f5820f1bb4ead53aba03cb7823c57112d71a544...
+
              Signature: 5f5820f63cc3750fe2261992b247c7ee6d160ae1...
Inputs:
  ---- Input 0 ----
  Destination:  PubKeyHash: 5aebc31421e7af1bdb47326709c27f3fd9381b00... (Wallet 4)
    Ada:      Lovelace:  9999
  
  ---- Output 1 ----
-
  Destination:  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Destination:  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  1

                      
  Value:
    Ada:      Lovelace:  9990
  
-
  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  21

                      
==== Slot #23, Tx #0 ====
-
TxId:       5c8ca315e659ca58b2a25db294e26c9b357e059056ea55891de4d42e407115a3
+
TxId:       8f9157794578db2e1588de27ff32829d6c0cae52d90bb49747662e95574d8559
Fee:        -
Forge:      -
Signatures  PubKey: 3d4017c3e843895a92b70aa74d1b7ebc9c982ccf...
-
              Signature: 5f5820f76366bc42dd36a5cfd356ae8336202266...
+
              Signature: 5f5820d9e71a1c763b27ba31cfdb93cdcfd62c88...
Inputs:
  ---- Input 0 ----
-
  Destination:  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Destination:  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
-
    Ada:      Lovelace:  1
+
    Ada:      Lovelace:  10
  Source:
-
    Tx:     12c8fd4448d33cc10c21c1121ed9ce3997b56761267afa755c4e1d54e57db40c
+
    Tx:     2b53d1300e372a9cb617d14015dac2b6fee75b9186ebe3daa3d3301ed6cbbb90
    Output #1
-
    Script: f6f601000003f603f602f6f664666978311907e4...
+
    Script: f6f601000003f603f602f6f664666978311907c8...
  
  ---- Input 1 ----
-
  Destination:  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Destination:  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  10
  Source:
-
    Tx:     40bba9774b4e847961264812c75e56889f3ee2659e55d5ee76138162be2c0fde
+
    Tx:     6a2179fcc90065e6bb033c4067dc5f2b5927bc7dcac8891015e41e2d537293e5
    Output #1
-
    Script: f6f601000003f603f602f6f664666978311907e4...
+
    Script: f6f601000003f603f602f6f664666978311907c8...
  
  ---- Input 2 ----
-
  Destination:  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Destination:  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
-
    Ada:      Lovelace:  10
+
    Ada:      Lovelace:  1
  Source:
-
    Tx:     60fa1705710e676d0b736d92131fd94a7ce855d05d25fb35ac3aaa44b7722884
+
    Tx:     fdd6fcc6054cd4bb154a12fd8a669c81c03f7a0c495f829ad2665ae3c0b2d02e
    Output #1
-
    Script: f6f601000003f603f602f6f664666978311907e4...
+
    Script: f6f601000003f603f602f6f664666978311907c8...

                      

                      
Outputs:
  Value:
    Ada:      Lovelace:  9990
  
-
  Script: df00e42e1b1b27d5ade43b542929ad767afe3c211480ed1897b6042894f7bb69
+
  Script: f2fc4574bc32caa6f62bb4bf091faa1d1b7d2673edea07c9715648c16d53a3f4
  Value:
    Ada:      Lovelace:  0
\ No newline at end of file
    Ada:      Lovelace:  10000

                      
==== Slot #1, Tx #0 ====
-
TxId:       83256ef8e4087f8a15f2495b9e7f1cbe711270a0c991b35508738d639efee6fb
+
TxId:       a50a08e76d39e9c51b6d382dca4f5418c253203ef79e77d580c22e46b58e6a8b
Fee:        -
Forge:      -
Signatures  PubKey: 3d4017c3e843895a92b70aa74d1b7ebc9c982ccf...
-
              Signature: 5f5820ae1748b66ae9cbddb34e90a8a4aeb09a1c...
+
              Signature: 5f582063fad9554857fb753777d83c79e3afeea6...
Inputs:
  ---- Input 0 ----
  Destination:  PubKeyHash: 2721f657e9ed91d2fc2a282f7ff5ed81ae48f48b... (Wallet 1)
    Ada:      Lovelace:  9990
  
  ---- Output 1 ----
-
  Destination:  Script: 35008b77ef05a53e7aabf387ecaae2ad530fdb8d409d709a395dd2214fb05996
+
  Destination:  Script: dcb259ef30796d25290f32556e6cdc69c1102dac5fd3e4ac2abc8450d6f5865d
  Value:
    Ada:      Lovelace:  10

                      
  Value:
    Ada:      Lovelace:  10000
  
-
  Script: 35008b77ef05a53e7aabf387ecaae2ad530fdb8d409d709a395dd2214fb05996
+
  Script: dcb259ef30796d25290f32556e6cdc69c1102dac5fd3e4ac2abc8450d6f5865d
  Value:
    Ada:      Lovelace:  10

                      
==== Slot #2, Tx #0 ====
-
TxId:       cd38eb001e80b2c0ff69b79460fe57c04ec6e2c9d5a31c4357936585b217e20f
+
TxId:       14797ce984192a36408106883d718f387512c603f3084d9e3a79d8068bb24f17
Fee:        -
Forge:      -
Signatures  PubKey: fc51cd8e6218a1a38da47ed00230f0580816ed13...
-
              Signature: 5f5820923fbe5f2389d1e69128429d2f03b6ca02...
+
              Signature: 5f58209eaa6d67a73629d5dc3f6cbffd3da06e01...
Inputs:
  ---- Input 0 ----
-
  Destination:  Script: 35008b77ef05a53e7aabf387ecaae2ad530fdb8d409d709a395dd2214fb05996
+
  Destination:  Script: dcb259ef30796d25290f32556e6cdc69c1102dac5fd3e4ac2abc8450d6f5865d
  Value:
    Ada:      Lovelace:  10
  Source:
-
    Tx:     83256ef8e4087f8a15f2495b9e7f1cbe711270a0c991b35508738d639efee6fb
+
    Tx:     a50a08e76d39e9c51b6d382dca4f5418c253203ef79e77d580c22e46b58e6a8b
    Output #1
-
    Script: f6f601000003f602f6f664666978311907d403f6...
+
    Script: f6f601000003f602f6f664666978311907b803f6...

                      

                      
Outputs:
  Value:
    Ada:      Lovelace:  10000
  
-
  Script: 35008b77ef05a53e7aabf387ecaae2ad530fdb8d409d709a395dd2214fb05996
+
  Script: dcb259ef30796d25290f32556e6cdc69c1102dac5fd3e4ac2abc8450d6f5865d
  Value:
    Ada:      Lovelace:  0
\ No newline at end of file
    Ada:      Lovelace:  10000

                      
==== Slot #1, Tx #0 ====
-
TxId:       bd34df21a41bf3bd8749ee5664c4fff5f22f49c1d5c6edaf4cb4daae07c7ae5c
+
TxId:       6658614e02195cbeb0c6eb0db949b4bbd722589249c6667267c3d9ecb1ce4f9f
Fee:        -
Forge:      -
Signatures  PubKey: fc51cd8e6218a1a38da47ed00230f0580816ed13...
-
              Signature: 5f5820e7c8ade26b693e114c1b9968f61a73ea6d...
+
              Signature: 5f5820866a02530b94422adb54f4dff77187a1d5...
Inputs:
  ---- Input 0 ----
  Destination:  PubKeyHash: 03d200a81ee0feace8fb845e5ec950a6f9add837... (Wallet 2)
    Ada:      Lovelace:  9940
  
  ---- Output 1 ----
-
  Destination:  Script: 8a5395d26b1fcc128d7805145d7e918c8377c8fc87af0b176ff957a8ede26f9f
+
  Destination:  Script: dd43bf93a77cb37555eb78f44d9781a26b271196c91062acf802383191bb3196
  Value:
    Ada:      Lovelace:  60

                      
  Value:
    Ada:      Lovelace:  10000
  
-
  Script: 8a5395d26b1fcc128d7805145d7e918c8377c8fc87af0b176ff957a8ede26f9f
+
  Script: dd43bf93a77cb37555eb78f44d9781a26b271196c91062acf802383191bb3196
  Value:
    Ada:      Lovelace:  60

                      
==== Slot #13, Tx #0 ====
-
TxId:       a18cb2135fc0e01d4cbb84a9ecae92db04b5bd78eff813ec90d95fe784a836f1
+
TxId:       440c95d1a03b504b11f87148d0cb22e97c164d5691e6cc094ad9d2ac041c2a5a
Fee:        -
Forge:      -
Signatures  PubKey: 3d4017c3e843895a92b70aa74d1b7ebc9c982ccf...
-
              Signature: 5f5820eab7bbdec6094cae77aa073186c20aad31...
+
              Signature: 5f5820f19a08248ba0beff4fdebb1017ee98627d...
Inputs:
  ---- Input 0 ----
-
  Destination:  Script: 8a5395d26b1fcc128d7805145d7e918c8377c8fc87af0b176ff957a8ede26f9f
+
  Destination:  Script: dd43bf93a77cb37555eb78f44d9781a26b271196c91062acf802383191bb3196
  Value:
    Ada:      Lovelace:  60
  Source:
-
    Tx:     bd34df21a41bf3bd8749ee5664c4fff5f22f49c1d5c6edaf4cb4daae07c7ae5c
+
    Tx:     6658614e02195cbeb0c6eb0db949b4bbd722589249c6667267c3d9ecb1ce4f9f
    Output #1
-
    Script: f6f601000003f603f602f6f6646669783119080c...
+
    Script: f6f601000003f603f602f6f664666978311907f0...

                      

                      
Outputs:
    Ada:      Lovelace:  10
  
  ---- Output 1 ----
-
  Destination:  Script: 8a5395d26b1fcc128d7805145d7e918c8377c8fc87af0b176ff957a8ede26f9f
+
  Destination:  Script: dd43bf93a77cb37555eb78f44d9781a26b271196c91062acf802383191bb3196
  Value:
    Ada:      Lovelace:  50

                      
  Value:
    Ada:      Lovelace:  10000
  
-
  Script: 8a5395d26b1fcc128d7805145d7e918c8377c8fc87af0b176ff957a8ede26f9f
+
  Script: dd43bf93a77cb37555eb78f44d9781a26b271196c91062acf802383191bb3196
  Value:
    Ada:      Lovelace:  50
\ No newline at end of file