x
130
parameter (or (or %fund (pair :initiate %initiate (address %participant) (pair %settings (pair (bytes %hashed_secret) (timestamp %refund_time)) (mutez %payoff))) (bytes :hashed_secret %add)) (or %withdraw (bytes :secret %redeem) (bytes :hashed_secret %refund)));storage (pair (big_map bytes (pair (pair %recipients (address %initiator) (address %participant)) (pair %settings (pair (mutez %amount) (timestamp %refund_time)) (mutez %payoff)))) unit);code { NIL @operations operation ; SWAP ; { { DUP ; CAR @% ; DIP { CDR } } ; DIP { { DUP ; CAR @% ; DIP { CDR @% } } } } ; DIP { DUP } ; IF_LEFT { IF_LEFT { { { DUP ; CAR @% ; DIP { CDR @% } } } ; DUP ; CONTRACT @participant unit ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; DROP ; SWAP ; { { DUP ; CAR ; DIP { CDR @% } } ; { DUP ; CAR @% ; DIP { CDR @% } } } ; DUP ; SIZE ; PUSH nat 32 ; { { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } ; DIP { DIP { DUP } ; SWAP ; AMOUNT @amount ; SUB ; SENDER ; DUP ; CONTRACT @initiator unit ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; DROP ; DIP { { PAIR ; PAIR } ; SWAP } ; { PAIR ; PAIR } ; SOME @xcat ; SWAP } ; DUP ; DIP { MEM ; NOT ; { IF {} { { UNIT ; FAILWITH } } } } } { DUP ; DIP { GET ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; { { DUP ; CAR @% ; DIP { CDR @% } } } ; DIP { { { DUP ; CAR ; DIP { CDR @% } } ; { DUP ; CAR @% ; DIP { CDR @% } } } ; SWAP ; DUP ; NOW ; { { COMPARE ; LT } ; IF {} { { UNIT ; FAILWITH } } } ; SWAP ; AMOUNT @amount ; ADD } ; { DIP { PAIR } ; DIP { PAIR } ; PAIR } ; SOME @xcat } } ; UPDATE ; PAIR @new_storage ; SWAP ; PAIR } { IF_LEFT { DUP ; SIZE ; PUSH nat 32 ; { { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } ; SHA256 ; SHA256 @hash ; DUP ; DIP { SWAP } ; { DIP { DIP { GET ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; DUP ; { { DUP ; CAR @% ; DIP { CDR @% } } } ; CDR @% ; CONTRACT @participant unit ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; SWAP ; { CAR ; CAR @% } ; { DIP { DIP { SENDER ; CONTRACT @sender unit ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; SWAP ; CDR @% ; { { DUP ; CAR ; DIP { CDR @% } } ; { DUP ; CAR @% ; DIP { CDR @% } } } ; DROP ; NOW ; { { COMPARE ; LT } ; IF {} { { UNIT ; FAILWITH } } } ; DUP ; PUSH mutez 0 ; { COMPARE ; LT ; IF { UNIT ; TRANSFER_TOKENS ; DIP { SWAP } ; CONS } { DROP ; DROP ; SWAP } } } } } ; UNIT ; TRANSFER_TOKENS } } } } { DUP ; DIP { GET ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; DUP ; { CAR ; CAR @% } ; CONTRACT @initiator unit ; { IF_NONE { { UNIT ; FAILWITH } } {} } ; SWAP ; CDR ; { { DUP ; CAR ; DIP { CDR @% } } ; { DUP ; CAR @% ; DIP { CDR @% } } } ; SWAP ; NOW ; { { COMPARE ; GE } ; IF {} { { UNIT ; FAILWITH } } } ; ADD ; UNIT ; TRANSFER_TOKENS ; SWAP ; { DIP { DIP { SWAP } } } } } ; NONE @none (pair (pair address address) (pair (pair mutez timestamp) mutez)) ; SWAP ; UPDATE @cleared_map ; SWAP ; DIP { SWAP ; DIP { PAIR } } ; CONS ; PAIR } }