x
327
parameter (or (or (or (pair %approve (address %spender) (nat %value)) (pair %getAllowance (pair %request (address %owner) (address %spender)) (contract %callback nat))) (or (pair %getBalance (address %owner) (contract %callback nat)) (pair %getTotalSupply (unit %request) (contract %callback nat)))) (or (pair %mintOrBurn (int %quantity) (address %target)) (pair %transfer (address %from) (pair (address %to) (nat %value)))));storage (pair (big_map %tokens address nat) (pair (big_map %allowances (pair (address %owner) (address %spender)) nat) (pair (address %admin) (nat %total_supply))));code { DUP ; CDR ; PUSH mutez 0 ; AMOUNT ; COMPARE ; NEQ ; IF { PUSH string "DontSendTez" ; FAILWITH } {} ; SWAP ; CAR ; IF_LEFT { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; PAIR ; PUSH nat 0 ; DIG 3 ; DUP ; DUG 4 ; CDR ; COMPARE ; GT ; PUSH nat 0 ; DIG 3 ; DUP ; DUG 4 ; DIG 3 ; DUP ; DUG 4 ; GET ; IF_NONE { PUSH nat 0 } {} ; COMPARE ; GT ; AND ; IF { PUSH string "UnsafeAllowanceChange" ; FAILWITH } {} ; DIG 3 ; DUP ; DUG 4 ; CDR ; CDR ; DIG 2 ; DIG 3 ; CDR ; PUSH nat 0 ; SWAP ; DUP ; DUG 2 ; COMPARE ; EQ ; IF { DROP ; NONE nat } { SOME } ; DIG 3 ; UPDATE ; PAIR ; SWAP ; CAR ; PAIR ; NIL operation ; PAIR } { SWAP ; DUP ; DIG 2 ; NIL operation ; SWAP ; DUP ; DUG 2 ; CDR ; PUSH mutez 0 ; DIG 4 ; CDR ; CAR ; DIG 4 ; CAR ; GET ; IF_NONE { PUSH nat 0 } {} ; TRANSFER_TOKENS ; CONS ; PAIR } } { IF_LEFT { SWAP ; DUP ; DIG 2 ; NIL operation ; SWAP ; DUP ; DUG 2 ; CDR ; PUSH mutez 0 ; DIG 4 ; CAR ; DIG 4 ; CAR ; GET ; IF_NONE { PUSH nat 0 } {} ; TRANSFER_TOKENS ; CONS ; PAIR } { SWAP ; DUP ; DIG 2 ; NIL operation ; SWAP ; CDR ; PUSH mutez 0 ; DIG 3 ; CDR ; CDR ; CDR ; TRANSFER_TOKENS ; CONS ; PAIR } } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "OnlyAdmin" ; FAILWITH } {} ; DUP ; CAR ; DIG 2 ; DUP ; DUG 3 ; CAR ; DIG 2 ; DUP ; DUG 3 ; CDR ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; ISNAT ; IF_NONE { PUSH string "Cannot burn more than the target's balance." ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CAR ; DIG 3 ; DUP ; DUG 4 ; CDR ; CDR ; CDR ; ADD ; ABS ; DIG 3 ; DUP ; DUG 4 ; CDR ; DIG 4 ; CAR ; PUSH nat 0 ; DIG 4 ; DUP ; DUG 5 ; COMPARE ; EQ ; IF { DIG 3 ; DROP ; NONE nat } { DIG 3 ; SOME } ; DIG 4 ; CDR ; UPDATE ; PAIR ; DUP ; DUG 2 ; CDR ; CDR ; CAR ; PAIR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; PAIR ; SWAP ; CAR ; PAIR ; NIL operation ; PAIR } { SWAP ; DUP ; DUG 2 ; CDR ; CAR ; DIG 2 ; DUP ; DUG 3 ; CAR ; DIG 2 ; DUP ; DUG 3 ; CAR ; SENDER ; COMPARE ; EQ ; IF { SWAP } { SENDER ; DIG 3 ; DUP ; DUG 4 ; CAR ; PAIR ; DIG 3 ; DUP ; DUG 4 ; CDR ; CDR ; DIG 3 ; DUP ; DUG 4 ; DIG 2 ; DUP ; DUG 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "NotEnoughAllowance" ; FAILWITH } {} ; DIG 3 ; PUSH nat 0 ; DIG 2 ; DUP ; DUG 3 ; COMPARE ; EQ ; IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ; DIG 2 ; UPDATE } ; DIG 2 ; DUP ; DUG 3 ; CDR ; CDR ; DIG 2 ; DUP ; DUG 3 ; DIG 4 ; DUP ; DUG 5 ; CAR ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "NotEnoughBalance" ; FAILWITH } {} ; DIG 2 ; PUSH nat 0 ; DIG 2 ; DUP ; DUG 3 ; COMPARE ; EQ ; IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ; DIG 3 ; DUP ; DUG 4 ; CAR ; UPDATE ; DIG 2 ; DUP ; DUG 3 ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; DIG 4 ; DUP ; DUG 5 ; CDR ; CAR ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; SWAP ; PUSH nat 0 ; DIG 2 ; DUP ; DUG 3 ; COMPARE ; EQ ; IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ; DIG 3 ; CDR ; CAR ; UPDATE ; DIG 2 ; CDR ; SWAP ; PAIR ; DUP ; CDR ; CDR ; DIG 2 ; PAIR ; SWAP ; CAR ; PAIR ; NIL operation ; PAIR } } }