x
886
parameter (or (or (or (pair %balance_of (list %requests (pair (address %owner) (nat %token_id))) (contract %callback (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))))) (unit %default)) (or (pair %mint (pair (address %address) (map %metadata string bytes)) (nat %token_id)) (list %reveal (pair (pair (nat %shares) (nat %token_id)) (map %token_info string bytes))))) (or (or (list %transfer (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) (list %update_operators (or (pair %add_operator (address %owner) (pair (address %operator) (nat %token_id))) (pair %remove_operator (address %owner) (pair (address %operator) (nat %token_id)))))) (unit %withdraw)));storage (pair (pair (pair (pair (address %administrator) (mutez %claimed)) (pair (big_map %ledger nat address) (big_map %metadata string bytes))) (pair (pair (big_map %operators (pair (pair address address) nat) unit) (big_map %tezClaims address (pair mutez nat))) (pair (big_map %tokenShares nat nat) (big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes)))))) (nat %totalShares));code { NIL operation ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; UNPAIR ; DUP 3 ; NIL operation ; DIG 3 ; PUSH mutez 0 ; DIG 4 ; MAP { DUP 6 ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 3 ; CDR ; DIG 2 ; CAR ; CAR ; CDR ; CAR ; SWAP ; GET ; IF_NONE { DROP ; PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } { COMPARE ; EQ ; IF { PUSH nat 1 } { PUSH nat 0 } } ; SWAP ; PAIR } ; DIG 5 ; DROP ; TRANSFER_TOKENS ; CONS ; PAIR } { DROP ; SWAP ; PAIR } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "failed assertion" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF { PUSH string "TOKEN_ID_EXISTS" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CDR ; PAIR ; DUP 4 ; CDR ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 4 ; CAR ; CDR ; CDR ; CAR ; PAIR ; DUP 4 ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; DUP 3 ; CAR ; CAR ; CDR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; DUP 6 ; CAR ; CAR ; DIG 6 ; CDR ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "failed assertion" ; FAILWITH } ; ITER { SWAP ; DUP ; CAR ; CDR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; GET ; IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; DUP 5 ; CDR ; DIG 3 ; CAR ; PAIR ; DUP 5 ; CAR ; CDR ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 3 ; CAR ; CDR ; CDR ; CAR ; PAIR ; DUP 3 ; CAR ; CDR ; CAR ; PAIR ; DUP 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CAR ; DUP 6 ; CAR ; CAR ; DUP 7 ; CAR ; CDR ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; DUP 3 ; CAR ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CAR ; CAR ; CDR ; CAR ; DUP 4 ; CAR ; CDR ; GET ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } { SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; CAR ; CDR ; CAR ; CDR ; SWAP ; GET ; IF_NONE { PUSH nat 0 ; PUSH mutez 0 ; PAIR } {} ; DUP 5 ; CAR ; CAR ; DIG 4 ; CAR ; CDR ; CDR ; CAR ; DIG 5 ; CAR ; CDR ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 3 ; CDR ; SUB ; ABS ; ADD ; SWAP ; CAR ; PAIR ; DUP 3 ; CDR ; DUP 4 ; CAR ; CDR ; CDR ; DUP 5 ; CAR ; CDR ; CAR ; CDR ; DIG 3 ; DIG 4 ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 4 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR } } ; SWAP ; PAIR } } } { IF_LEFT { IF_LEFT { ITER { DUP ; DUG 2 ; CAR ; SWAP ; DIG 2 ; CDR ; ITER { SWAP ; SENDER ; DUP 4 ; COMPARE ; NEQ ; IF { DUP ; DUP 3 ; CDR ; CAR ; DUP 5 ; DIG 2 ; CAR ; CDR ; CAR ; CAR ; DIG 2 ; SENDER ; DIG 3 ; PAIR ; PAIR ; MEM ; IF { UNIT } { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } } { UNIT } ; DROP ; PUSH nat 0 ; DUP 3 ; CDR ; CDR ; COMPARE ; EQ ; DUP 3 ; CAR ; DUP 5 ; COMPARE ; EQ ; OR ; IF { SWAP ; DROP } { DUP ; DUP 4 ; DUP 4 ; CDR ; CAR ; DIG 2 ; CAR ; CAR ; CDR ; CAR ; SWAP ; GET ; IF_NONE { DROP ; PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } { COMPARE ; EQ ; IF { PUSH nat 1 } { PUSH nat 0 } } ; DUP 3 ; CDR ; CDR ; SWAP ; COMPARE ; LT ; IF { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; DUP ; CAR ; CDR ; CDR ; CAR ; DUP 3 ; CDR ; CAR ; GET ; IF_NONE { PUSH nat 0 } {} ; SWAP ; DUP ; DUG 2 ; DUP 5 ; SWAP ; CAR ; CDR ; CAR ; CDR ; SWAP ; GET ; IF_NONE { PUSH nat 0 ; PUSH mutez 0 ; PAIR } {} ; DUP 3 ; DUP 5 ; CAR ; SWAP ; CAR ; CDR ; CAR ; CDR ; SWAP ; GET ; IF_NONE { PUSH nat 0 ; PUSH mutez 0 ; PAIR } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 4 ; DUP 4 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 3 ; CDR ; SWAP ; DUP ; DUG 2 ; DIG 4 ; CAR ; SUB ; PAIR ; DUP 4 ; SWAP ; DUP ; DUG 2 ; CDR ; SUB ; ABS ; SWAP ; CAR ; PAIR ; DUP 3 ; CDR ; DIG 2 ; DIG 3 ; CAR ; ADD ; PAIR ; DIG 2 ; SWAP ; DUP ; DUG 2 ; CDR ; ADD ; SWAP ; CAR ; PAIR ; DUP 3 ; CDR ; DUP 4 ; CAR ; CDR ; DUP 5 ; CAR ; CAR ; CDR ; CDR ; DUP 6 ; CAR ; CAR ; CDR ; CAR ; DUP 8 ; CAR ; DUP 9 ; CDR ; CAR ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; DIG 5 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; PUSH nat 0 ; DUP 4 ; CDR ; COMPARE ; GT ; PUSH mutez 0 ; DUP 5 ; CAR ; COMPARE ; GT ; OR ; IF { DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; DIG 5 ; DUP 8 ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 4 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR } { DIG 2 ; DROP ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; DUP 7 ; NONE (pair mutez nat) ; SWAP ; UPDATE ; DUP 4 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR } ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; DIG 4 ; DIG 5 ; CAR ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 4 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR } } ; SWAP ; DROP } ; SWAP ; PAIR } { ITER { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; GET 4 ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { DROP ; PUSH string "FA2_NOT_OWNER" ; FAILWITH } { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; DUP 4 ; CAR ; CDR ; CAR ; CDR ; DUP 5 ; CAR ; CDR ; CAR ; CAR ; UNIT ; DUP 6 ; GET 4 ; DUP 7 ; GET 3 ; DIG 7 ; CAR ; PAIR ; PAIR ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR } } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; GET 4 ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { DROP ; PUSH string "FA2_NOT_OWNER" ; FAILWITH } { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; DUP 4 ; CAR ; CDR ; CAR ; CDR ; DUP 5 ; CAR ; CDR ; CAR ; CAR ; DUP 5 ; GET 4 ; DUP 6 ; GET 3 ; DIG 6 ; CAR ; PAIR ; PAIR ; NONE unit ; SWAP ; UPDATE ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR } } } ; SWAP ; PAIR } } { DIG 2 ; DROP 2 ; DUP ; SENDER ; SWAP ; CAR ; CDR ; CAR ; CDR ; SWAP ; GET ; IF_NONE { PUSH nat 0 ; PUSH mutez 0 ; PAIR } {} ; PUSH nat 0 ; SWAP ; DUP ; DUG 2 ; CDR ; COMPARE ; EQ ; IF { PUSH string "Zero shares found" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 4 ; CAR ; CAR ; CAR ; CDR ; BALANCE ; ADD ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP ; DUP 3 ; CAR ; COMPARE ; GE ; IF { PUSH string "Can't withdraw now" ; FAILWITH } { SWAP ; DUP ; DUG 2 ; CAR ; SWAP ; SUB } ; DUP 3 ; CDR ; DUP 4 ; CAR ; CDR ; DUP 5 ; CAR ; CAR ; CDR ; DUP 4 ; DUP 7 ; CAR ; CAR ; CAR ; CDR ; ADD ; DIG 6 ; CAR ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; PAIR ; DUP 3 ; CDR ; DUP 3 ; DIG 4 ; CAR ; ADD ; PAIR ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; DUP 4 ; CAR ; CDR ; CAR ; CDR ; DIG 3 ; SOME ; SENDER ; UPDATE ; DUP 4 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; SENDER ; CONTRACT unit ; IF_NONE { PUSH string "Contract not found" ; FAILWITH } {} ; SWAP ; NIL operation ; DIG 2 ; DIG 3 ; UNIT ; TRANSFER_TOKENS ; CONS ; PAIR } } }