x
79
parameter (or (unit %default) (or (lambda %execute unit (list operation)) (pair %forward_to_admin (address %token_address) (pair (nat %token_amount) (nat %token_id)))));storage address;code { LAMBDA unit unit { DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT } ; SWAP ; UNPAIR ; IF_LEFT { DROP ; SWAP ; DROP ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; NIL operation ; SWAP ; UNIT ; EXEC ; NIL operation ; SWAP ; ITER { CONS } ; ITER { CONS } } { DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; GET 3 ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP ; GET 3 ; SWAP ; GET 4 ; DUP 8 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }