x
551
1081
parameter (or (or (or (or (or (pair %acceptCounterOffer (nat %token_id) (pair (address %token_origin) (address %seller))) (pair %acceptOffer (address %buyer) (pair (nat %token_id) (address %token_origin)))) (or (address %addCollection) (pair %addToMarketplace (or %swap_type (pair %dutch (nat %starting_price) (nat %duration)) (unit %regular)) (pair (nat %token_id) (pair (address %token_origin) (pair (nat %token_price) (pair (timestamp %start_time) (pair (timestamp %end_time) (pair (or %recipient (unit %general) (address %reserved)) (pair (string %token_symbol) (pair (set %accepted_tokens string) (bool %is_multi_token)))))))))))) (or (or (pair %collect (nat %swap_id) (pair (string %token_symbol) (pair (nat %amount_ft) (address %to_)))) (pair %makeCounterOffer (nat %token_id) (pair (address %token_origin) (pair (address %buyer) (pair (timestamp %start_time) (pair (timestamp %end_time) (pair (string %token_symbol) (nat %ft_amount)))))))) (or (address %removeCollection) (nat %removeFromMarketplace)))) (or (or (or (pair %sendOffer (nat %token_id) (pair (address %token_origin) (pair (timestamp %start_time) (pair (timestamp %end_time) (pair (string %token_symbol) (nat %ft_amount)))))) (int %setOracleTolerance)) (or (bool %setPause) (pair %updateAllowedTokens (string %token_symbol) (or %direction (pair %add_token (address %fa_address) (string %fa_type)) (unit %remove_token))))) (or (or (nat %updateFee) (address %updateMultisig)) (or (pair %updateOffer (nat %token_id) (pair (address %token_origin) (pair (timestamp %start_time) (pair (timestamp %end_time) (pair (string %token_symbol) (nat %ft_amount)))))) (address %updateOracleAddress))))) (or (or (or (nat %updateRoyalties) (address %updateRoyaltiesAddress)) (or (pair %updateSwap (nat %swap_id) (or %action (or (or (nat %update_duration) (nat %update_price)) (or (address %update_reserved_address) (nat %update_starting_price))) (pair %update_times (timestamp %start_time) (timestamp %end_time)))) (address %updateTreasuryAddress))) (or (pair %withdrawCounterOffer (nat %token_id) (pair (address %buyer) (address %token_origin))) (pair %withdrawOffer (nat %token_id) (address %token_origin)))));storage (pair (set %collections address) (pair (address %royalties_address) (pair (nat %next_swap_id) (pair (big_map %tokens (pair (nat %token_id) (address %token_origin)) nat) (pair (big_map %counter_offers (pair (address %buyer) (pair (address %seller) (pair (nat %token_id) (address %token_origin)))) (pair (pair (pair (timestamp %end_time) (nat %ft_amount)) (pair (address %seller) (timestamp %start_time))) (string %token_symbol))) (pair (big_map %swaps nat (pair (address %owner) (pair (nat %token_id) (pair (address %token_origin) (pair (bool %is_dutch) (pair (bool %is_reserved) (pair (nat %starting_price) (pair (nat %token_price) (pair (timestamp %start_time) (pair (int %duration) (pair (timestamp %end_time) (pair (address %recipient) (pair (string %ft_symbol) (pair (set %accepted_tokens string) (bool %is_multi_token))))))))))))))) (pair (big_map %offers (pair (address %buyer) (pair (nat %token_id) (address %token_origin))) (pair (nat %value) (pair (timestamp %start_time) (pair (timestamp %end_time) (string %token_symbol))))) (pair (nat %royalties_rate) (pair (nat %management_fee_rate) (pair (bool %paused) (pair (big_map %allowed_tokens string (pair (string %token_symbol) (pair (address %fa_address) (string %fa_type)))) (pair (big_map %available_pairs (pair string string) string) (pair (address %oracle) (pair (address %multisig) (pair (address %treasury) (int %oracle_tolerance))))))))))))))));code { UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { DUP ; GET 3 ; DUP 2 ; CAR ; SENDER ; PAIR 3 ; DUP 2 ; GET 3 ; DUP 3 ; CAR ; DUP 4 ; GET 4 ; SENDER ; PAIR 4 ; DUP 3 ; GET 3 ; DUP 4 ; CAR ; PAIR ; DUP 5 ; GET 13 ; DUP 4 ; GET ; IF_NONE { DIG 2 ; DROP ; PUSH nat 116 ; FAILWITH } { DUP 6 ; GET 13 ; NONE (pair nat (pair timestamp (pair timestamp string))) ; DIG 5 ; UPDATE ; SWAP ; PAIR } ; UNPAIR ; DUP 6 ; GET 9 ; DUP 5 ; GET ; IF_NONE { DIG 3 ; DROP ; PUSH nat 141 ; FAILWITH } { DUP 7 ; GET 9 ; NONE (pair (pair (pair timestamp nat) (pair address timestamp)) string) ; DIG 6 ; UPDATE ; SWAP ; PAIR } ; UNPAIR ; DUP ; CAR ; CDR ; CDR ; NOW ; COMPARE ; LT ; IF { DROP 7 ; PUSH nat 143 ; FAILWITH } { PUSH mutez 0 ; AMOUNT ; COMPARE ; NEQ ; PUSH string "XTZ" ; DUP 3 ; CDR ; COMPARE ; EQ ; NOT ; AND ; IF { DROP 7 ; PUSH nat 133 ; FAILWITH } { DUP ; CAR ; CAR ; CAR ; NOW ; COMPARE ; GT ; IF { DROP 7 ; PUSH nat 144 ; FAILWITH } { DUP ; CAR ; CAR ; CDR ; AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; COMPARE ; NEQ ; PUSH string "XTZ" ; DUP 3 ; CDR ; COMPARE ; EQ ; AND ; IF { DROP 7 ; PUSH nat 114 ; FAILWITH } { PUSH nat 10000 ; DUP 8 ; GET 17 ; DUP 3 ; CAR ; CAR ; CDR ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PUSH nat 10000 ; DUP 3 ; CAR ; CAR ; CDR ; DUP 10 ; GET 15 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP ; DUP 3 ; ADD ; DUP 4 ; CAR ; CAR ; CDR ; SUB ; ISNAT ; IF_NONE { PUSH nat 105 ; FAILWITH } {} ; NIL operation ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 13 ; CAR ; SENDER ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; DUP 11 ; GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; SWAP ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS ; DUP 11 ; SENDER ; SELF_ADDRESS ; DUP 10 ; GET 6 ; DIG 10 ; CAR ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 10 ; DIG 9 ; GET 4 ; SENDER ; DUP 8 ; CDR ; DIG 5 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 8 ; DUP 9 ; GET 3 ; SENDER ; DUP 7 ; CDR ; DIG 5 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 7 ; DUP 8 ; GET 29 ; SENDER ; DIG 5 ; CDR ; DIG 5 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 5 ; DIG 3 ; UPDATE 13 ; DIG 2 ; UPDATE 9 ; DUP 4 ; GET 7 ; DUP 4 ; GET ; IF_NONE { DIG 2 ; DROP ; DIG 2 ; GET 7 } { DROP ; DIG 3 ; GET 7 ; NONE nat ; DIG 4 ; UPDATE } ; UPDATE 7 ; SWAP ; PAIR } } } } } } { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { DUP ; GET 3 ; DUP 2 ; CAR ; SENDER ; DUP 4 ; GET 4 ; DUP 4 ; DUP 4 ; PAIR 3 ; DUP 5 ; GET 4 ; DUP 6 ; GET 3 ; PAIR ; DUP 7 ; GET 13 ; DUP 3 ; GET ; IF_NONE { PUSH nat 113 ; FAILWITH } {} ; DUP ; GET 3 ; NOW ; COMPARE ; LT ; IF { DROP 8 ; PUSH nat 111 ; FAILWITH } { DUP ; GET 5 ; NOW ; COMPARE ; GT ; IF { DROP 8 ; PUSH nat 112 ; FAILWITH } { PUSH nat 10000 ; DUP 9 ; GET 17 ; DUP 3 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PUSH nat 10000 ; DUP 3 ; CAR ; DUP 11 ; GET 15 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP ; DUP 3 ; ADD ; DUP 4 ; CAR ; SUB ; ISNAT ; IF_NONE { PUSH nat 105 ; FAILWITH } {} ; DUP 11 ; GET 7 ; DUP 6 ; GET ; IF_NONE { DIG 4 ; DROP ; DUP 10 ; GET 7 ; DUP 11 ; GET 11 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DIG 12 ; DIG 12 ; PAIR 3 ; CONS ; DUP 10 ; PAIR ; CONS ; PAIR ; PAIR } { DUP 12 ; GET 11 ; DUP 2 ; GET ; IF_NONE { PUSH nat 103 ; FAILWITH } {} ; CAR ; DUP 9 ; COMPARE ; NEQ ; IF { DIG 5 ; DIG 8 ; DIG 9 ; DROP 4 ; PUSH nat 125 ; FAILWITH } { DUP 12 ; GET 7 ; NONE nat ; DIG 7 ; UPDATE ; DUP 12 ; GET 11 ; NONE (pair address (pair nat (pair address (pair bool (pair bool (pair nat (pair nat (pair timestamp (pair int (pair timestamp (pair address (pair string (pair (set string) bool))))))))))))) ; DIG 3 ; UPDATE ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DIG 12 ; DIG 12 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; PAIR ; PAIR } } ; UNPAIR ; UNPAIR ; NIL operation ; DIG 10 ; GET 4 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; DIG 2 ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS ; DUP 10 ; DIG 9 ; SELF_ADDRESS ; DUP 10 ; GET 6 ; DIG 7 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 8 ; DUP 9 ; GET 3 ; SELF_ADDRESS ; DUP 9 ; GET 6 ; DIG 7 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 7 ; DUP 8 ; GET 29 ; SELF_ADDRESS ; DIG 7 ; GET 6 ; DIG 7 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 5 ; DIG 5 ; GET 13 ; NONE (pair nat (pair timestamp (pair timestamp string))) ; DIG 6 ; UPDATE ; UPDATE 13 ; DIG 2 ; UPDATE 11 ; DIG 2 ; UPDATE 7 ; SWAP ; PAIR } } } } } { IF_LEFT { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "addCollection" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address address) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %addCollection address ; IF_NONE { DROP ; PUSH string "no addCollection entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { DUP 2 ; DIG 2 ; CAR ; DIG 2 ; PUSH bool True ; SWAP ; UPDATE ; UPDATE 1 ; NIL operation } ; PAIR } { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { DUP 2 ; CAR ; DUP 2 ; GET 5 ; MEM ; NOT ; IF { DROP 2 ; PUSH nat 152 ; FAILWITH } { PUSH string "DOGA" ; DUP 2 ; GET 15 ; COMPARE ; NEQ ; PUSH string "XTZ" ; DUP 3 ; GET 15 ; COMPARE ; NEQ ; AND ; DUP 2 ; GET 18 ; NOT ; AND ; IF { DROP 2 ; PUSH nat 148 ; FAILWITH } { PUSH mutez 0 ; AMOUNT ; COMPARE ; NEQ ; PUSH string "XTZ" ; DUP 3 ; GET 15 ; COMPARE ; NEQ ; AND ; IF { DROP 2 ; PUSH nat 133 ; FAILWITH } { DUP ; GET 5 ; DUP 2 ; GET 3 ; PAIR ; DUP 3 ; GET 7 ; DUP 2 ; GET ; IF_NONE { DUP 3 ; GET 5 } { DROP ; PUSH nat 118 ; FAILWITH } ; DUP 3 ; GET 11 ; DUP 4 ; GET 9 ; COMPARE ; GE ; IF { DROP 4 ; PUSH nat 120 ; FAILWITH } { DUP 3 ; GET 17 ; ITER { PUSH nat 134 ; DUP 6 ; GET 21 ; DIG 2 ; MEM ; NOT ; IF { FAILWITH } { DROP } } ; DUP 4 ; GET 21 ; DUP 4 ; GET 15 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } { CAR } ; DUP 4 ; CAR ; IF_LEFT { DUP 5 ; GET 9 ; DUP 6 ; GET 11 ; SUB ; DUP 2 ; CDR ; INT ; COMPARE ; GT ; IF { DROP ; PUSH nat 127 ; FAILWITH } { PUSH bool True ; DUP 2 ; CDR ; INT ; DIG 2 ; CAR ; PAIR ; PAIR } } { DROP ; PUSH bool False ; PUSH int 0 ; DUP 6 ; GET 7 ; PAIR ; PAIR } ; UNPAIR ; UNPAIR ; DUP 7 ; GET 13 ; IF_LEFT { DROP ; PUSH bool False ; SELF_ADDRESS } { PUSH bool True ; SWAP } ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 12 ; GET 3 ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; DUP 10 ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; SWAP ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; DUP 11 ; GET 11 ; DUP 11 ; GET 18 ; DUP 12 ; GET 18 ; NOT ; IF { EMPTY_SET string ; DUP 10 ; PUSH bool True ; SWAP ; UPDATE } { DUP 12 ; GET 17 } ; DIG 9 ; DIG 5 ; DUP 13 ; GET 11 ; DIG 9 ; DUP 14 ; GET 9 ; DUP 15 ; GET 7 ; DIG 11 ; DIG 11 ; DIG 12 ; DUP 16 ; GET 5 ; DIG 16 ; GET 3 ; SENDER ; PAIR 14 ; SOME ; DUP 4 ; PAIR 3 ; DUP 5 ; PUSH nat 1 ; DUP 7 ; GET 5 ; ADD ; UPDATE 5 ; SWAP ; UNPAIR 3 ; UPDATE ; UPDATE 11 ; DIG 4 ; GET 7 ; DIG 3 ; SOME ; DIG 4 ; UPDATE ; UPDATE 7 ; NIL operation ; DIG 2 ; CONS ; PAIR } } } } } } } } { IF_LEFT { IF_LEFT { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { PUSH mutez 0 ; AMOUNT ; COMPARE ; NEQ ; PUSH string "XTZ" ; DUP 3 ; GET 3 ; COMPARE ; NEQ ; AND ; IF { DROP 2 ; PUSH nat 133 ; FAILWITH } { DUP 2 ; GET 11 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH nat 103 ; FAILWITH } {} ; DUP ; GET 5 ; DUP 2 ; GET 3 ; PAIR ; DUP 2 ; GET 21 ; DUP 4 ; GET 6 ; COMPARE ; NEQ ; DUP 3 ; GET 9 ; AND ; IF { PUSH nat 128 ; FAILWITH } { DUP 3 ; GET 6 } ; DUP 3 ; GET 15 ; NOW ; COMPARE ; LT ; IF { DROP 5 ; PUSH nat 109 ; FAILWITH } { DUP 3 ; GET 19 ; NOW ; COMPARE ; GT ; IF { DROP 5 ; PUSH nat 110 ; FAILWITH } { PUSH nat 0 ; DUP 4 ; GET 13 ; COMPARE ; EQ ; IF { NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 6 ; GET 3 ; DIG 4 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; DIG 2 ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; SWAP ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; DUP 4 ; DUP 5 ; GET 11 ; NONE (pair address (pair nat (pair address (pair bool (pair bool (pair nat (pair nat (pair timestamp (pair int (pair timestamp (pair address (pair string (pair (set string) bool))))))))))))) ; DIG 5 ; CAR ; UPDATE ; UPDATE 11 ; DIG 3 ; GET 7 ; NONE nat ; DIG 4 ; UPDATE ; UPDATE 7 ; NIL operation ; DIG 2 ; CONS } { DUP 3 ; GET 7 ; IF { DUP 3 ; GET 17 ; DUP 4 ; GET 13 ; NOW ; DUP 3 ; DUP 7 ; GET 15 ; ADD ; SUB ; ISNAT ; IF_NONE { SWAP ; DROP } { DUP 2 ; DIG 3 ; ABS ; DIG 3 ; DUP 7 ; GET 11 ; SUB ; ABS ; DIG 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; ADD } } { DUP 3 ; GET 13 } ; DUP 4 ; GET 25 ; DUP 6 ; GET 3 ; MEM ; NOT ; IF { PUSH nat 138 ; FAILWITH } {} ; PUSH string "XTZ" ; DUP 6 ; GET 3 ; COMPARE ; EQ ; IF { AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { DUP 5 ; GET 5 } ; DUP 5 ; GET 26 ; NOT ; IF { SWAP } { DUP 6 ; GET 3 ; DUP 6 ; GET 23 ; DUP 2 ; DUP 2 ; COMPARE ; EQ ; IF { DROP 2 ; SWAP } { PUSH string "USD" ; DUP 3 ; COMPARE ; EQ ; IF { DUP 9 ; GET 23 ; DUG 2 ; PAIR ; GET ; IF_NONE { PUSH nat 136 ; FAILWITH } { PUSH string "" ; PUSH bool True ; DIG 2 ; PAIR ; PAIR } } { PUSH string "USD" ; DUP 2 ; COMPARE ; EQ ; IF { DUP 9 ; GET 23 ; SWAP ; DIG 2 ; PAIR ; GET ; IF_NONE { PUSH nat 136 ; FAILWITH } { PUSH string "" ; PUSH bool False ; DIG 2 ; PAIR ; PAIR } } { DUP 9 ; GET 23 ; PUSH string "USD" ; DIG 2 ; PAIR ; GET ; IF_NONE { PUSH nat 136 ; FAILWITH } {} ; DUP 9 ; GET 23 ; PUSH string "USD" ; DIG 3 ; PAIR ; GET ; IF_NONE { PUSH nat 136 ; FAILWITH } {} ; PUSH bool True ; DIG 2 ; PAIR ; PAIR } } ; UNPAIR ; UNPAIR ; PUSH nat 1000000 ; PUSH string "" ; DUP 5 ; COMPARE ; EQ ; IF { DIG 3 ; DROP ; DUP 10 ; GET 25 ; DIG 2 ; VIEW "getPrice" (pair timestamp nat) ; IF_NONE { PUSH nat 137 ; FAILWITH } {} ; UNPAIR ; DUP 11 ; GET 30 ; NOW ; SUB ; SWAP ; COMPARE ; LT ; IF { SWAP ; DIG 2 ; DIG 4 ; DROP 4 ; PUSH nat 151 ; FAILWITH } { DIG 2 ; IF { DIG 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { SWAP ; DIG 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } } } { DIG 2 ; DROP 2 ; DUP 9 ; GET 25 ; SWAP ; VIEW "getPrice" (pair timestamp nat) ; IF_NONE { PUSH nat 137 ; FAILWITH } {} ; UNPAIR ; DUP 10 ; GET 30 ; NOW ; SUB ; SWAP ; COMPARE ; LT ; IF { SWAP ; DIG 3 ; DROP 3 ; PUSH nat 151 ; FAILWITH } { DUP 9 ; GET 25 ; DIG 2 ; VIEW "getPrice" (pair timestamp nat) ; IF_NONE { PUSH nat 137 ; FAILWITH } {} ; UNPAIR ; DUP 10 ; GET 30 ; NOW ; SUB ; SWAP ; COMPARE ; LT ; IF { SWAP ; DIG 3 ; DROP 3 ; PUSH nat 151 ; FAILWITH } { SWAP ; DIG 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } } } } } ; SWAP ; DUP 2 ; COMPARE ; LE ; NOT ; IF { PUSH nat 114 ; FAILWITH } {} ; PUSH nat 10000 ; DUP 7 ; GET 17 ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PUSH nat 10000 ; DUP 3 ; DUP 9 ; GET 15 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP ; DUP 3 ; ADD ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH nat 105 ; FAILWITH } {} ; DUP 8 ; DUP 7 ; CAR ; SENDER ; DUP 10 ; GET 3 ; DIG 4 ; NIL operation ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 8 ; DUP 9 ; GET 3 ; SENDER ; DUP 10 ; GET 3 ; DIG 5 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 7 ; DUP 8 ; GET 29 ; SENDER ; DUP 9 ; GET 3 ; DIG 5 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 7 ; GET 3 ; DIG 5 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; DIG 3 ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; SWAP ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS ; DUP 4 ; DUP 5 ; GET 11 ; NONE (pair address (pair nat (pair address (pair bool (pair bool (pair nat (pair nat (pair timestamp (pair int (pair timestamp (pair address (pair string (pair (set string) bool))))))))))))) ; DIG 5 ; CAR ; UPDATE ; UPDATE 11 ; DIG 3 ; GET 7 ; NONE nat ; DIG 4 ; UPDATE ; UPDATE 7 ; SWAP } ; PAIR } } } } } { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { DUP 2 ; CAR ; DUP 2 ; GET 3 ; MEM ; NOT ; IF { DROP 2 ; PUSH nat 152 ; FAILWITH } { DUP ; GET 9 ; DUP 2 ; GET 7 ; COMPARE ; GE ; IF { DROP 2 ; PUSH nat 120 ; FAILWITH } { DUP 2 ; GET 21 ; DUP 2 ; GET 11 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } { DROP } ; DUP ; GET 3 ; DUP 2 ; CAR ; SENDER ; DUP 4 ; GET 5 ; PAIR 4 ; DUP 2 ; GET 3 ; DUP 3 ; CAR ; PAIR ; DUP 4 ; GET 9 ; DUP 3 ; GET ; IF_NONE { DUP 3 ; GET 11 ; DUP 4 ; GET 7 ; SENDER ; PAIR ; DUP 5 ; GET 12 ; DUP 6 ; GET 9 ; PAIR ; PAIR ; PAIR } { DROP ; PUSH nat 147 ; FAILWITH } ; DUP 5 ; GET 7 ; DUP 3 ; GET ; IF_NONE { SWAP ; DROP ; NIL operation ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 7 ; CAR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; DIG 4 ; GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; SWAP ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS ; DUP 4 ; GET 11 ; DUP 5 ; GET 7 } { DIG 4 ; DROP ; DUP 5 ; GET 11 ; DUP 2 ; GET ; IF_NONE { PUSH string "not possible" ; FAILWITH } { CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH nat 150 ; FAILWITH } {} } ; NIL operation ; DUP 6 ; GET 11 ; NONE (pair address (pair nat (pair address (pair bool (pair bool (pair nat (pair nat (pair timestamp (pair int (pair timestamp (pair address (pair string (pair (set string) bool))))))))))))) ; DIG 3 ; UPDATE ; DUP 6 ; GET 7 ; NONE nat ; DIG 5 ; UPDATE } ; DUP 6 ; DIG 6 ; GET 9 ; DIG 5 ; SOME ; DIG 6 ; UPDATE ; UPDATE 9 ; SWAP ; UPDATE 7 ; SWAP ; UPDATE 11 ; SWAP ; PAIR } } } } } { IF_LEFT { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "removeCollection" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address address) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %removeCollection address ; IF_NONE { DROP ; PUSH string "no removeCollection entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { DUP 2 ; DIG 2 ; CAR ; DIG 2 ; PUSH bool False ; SWAP ; UPDATE ; UPDATE 1 ; NIL operation } ; PAIR } { DUP 2 ; GET 11 ; DUP 2 ; GET ; IF_NONE { PUSH nat 103 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { DROP 3 ; PUSH nat 104 ; FAILWITH } { NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 4 ; GET 3 ; SENDER ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; DUP 2 ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; SWAP ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; DUP 4 ; DUP 5 ; GET 11 ; NONE (pair address (pair nat (pair address (pair bool (pair bool (pair nat (pair nat (pair timestamp (pair int (pair timestamp (pair address (pair string (pair (set string) bool))))))))))))) ; DIG 5 ; UPDATE ; UPDATE 11 ; DIG 3 ; GET 7 ; NONE nat ; DUP 5 ; GET 5 ; DIG 5 ; GET 3 ; PAIR ; UPDATE ; UPDATE 7 ; NIL operation ; DIG 2 ; CONS ; PAIR } } } } } { IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { DUP 2 ; CAR ; DUP 2 ; GET 3 ; MEM ; NOT ; IF { DROP 2 ; PUSH nat 152 ; FAILWITH } { DUP ; GET 7 ; DUP 2 ; GET 5 ; COMPARE ; GT ; IF { DROP 2 ; PUSH nat 120 ; FAILWITH } { PUSH mutez 0 ; AMOUNT ; COMPARE ; NEQ ; PUSH string "XTZ" ; DUP 3 ; GET 9 ; COMPARE ; NEQ ; AND ; IF { DROP 2 ; PUSH nat 133 ; FAILWITH } { DUP ; GET 3 ; DUP 2 ; CAR ; SENDER ; PAIR 3 ; DUP 3 ; GET 13 ; DUP 2 ; GET ; IF_NONE { PUSH string "XTZ" ; DUP 3 ; GET 9 ; COMPARE ; EQ ; IF { AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 3 ; GET 10 ; COMPARE ; NEQ ; IF { PUSH nat 140 ; FAILWITH } { AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } } { DUP 2 ; GET 10 } ; NIL operation ; PUSH string "XTZ" ; DUP 5 ; GET 9 ; COMPARE ; EQ ; IF {} { DUP 5 ; GET 21 ; DUP 5 ; GET 9 ; GET ; IF_NONE { DROP ; PUSH nat 131 ; FAILWITH } { SWAP ; DUP 3 ; SELF_ADDRESS ; SENDER ; DIG 4 ; GET 3 ; PAIR 4 ; UNPAIR 4 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 4 ; DIG 4 ; DIG 4 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 5 ; DIG 5 ; GET 13 ; DUP 6 ; GET 9 ; DUP 7 ; GET 7 ; DIG 7 ; GET 5 ; DIG 6 ; PAIR 4 ; SOME ; DIG 4 ; UPDATE ; UPDATE 13 ; SWAP ; PAIR } { DROP 4 ; PUSH nat 115 ; FAILWITH } } } } } } { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "setOracleTolerance" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address int) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %setOracleTolerance int ; IF_NONE { DROP ; PUSH string "no setOracleTolerance entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 30 ; NIL operation } ; PAIR } } { IF_LEFT { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "setPause" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address bool) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %setPause bool ; IF_NONE { DROP ; PUSH string "no setPause entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 19 ; NIL operation } ; PAIR } { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "updateAllowedTokens" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address (pair string (or (pair address string) unit))) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %updateAllowedTokens (pair (string %token_symbol) (or %direction (pair %add_token (address %fa_address) (string %fa_type)) (unit %remove_token))) ; IF_NONE { DROP ; PUSH string "no updateAllowedTokens entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } ; PAIR } { DUP ; CDR ; IF_LEFT { DUP 3 ; GET 21 ; DUP 3 ; CAR ; MEM ; IF { DROP 3 ; PUSH nat 145 ; FAILWITH } { DUP 3 ; GET 23 ; PUSH string "USD" ; DUP 4 ; CAR ; PAIR ; MEM ; IF { DROP 3 ; PUSH nat 146 ; FAILWITH } { DUP 3 ; DUP 4 ; GET 21 ; DUP 3 ; CDR ; DIG 3 ; CAR ; DUP 5 ; CAR ; PAIR 3 ; SOME ; DUP 4 ; CAR ; UPDATE ; UPDATE 21 ; DIG 2 ; GET 23 ; PUSH string "-USD" ; DUP 4 ; CAR ; CONCAT ; SOME ; PUSH string "USD" ; DIG 4 ; CAR ; PAIR ; UPDATE ; UPDATE 23 ; NIL operation ; PAIR } } } { DROP ; DUP 2 ; DUP 3 ; GET 21 ; NONE (pair string (pair address string)) ; DUP 4 ; CAR ; UPDATE ; UPDATE 21 ; DIG 2 ; GET 23 ; NONE string ; PUSH string "USD" ; DIG 4 ; CAR ; PAIR ; UPDATE ; UPDATE 23 ; NIL operation ; PAIR } } } } } { IF_LEFT { IF_LEFT { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "updateFee" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address nat) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %updateFee nat ; IF_NONE { DROP ; PUSH string "no updateFee entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 17 ; NIL operation } } { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "updateMultisig" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address address) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %updateMultisig address ; IF_NONE { DROP ; PUSH string "no updateMultisig entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 27 ; NIL operation } } ; PAIR } { IF_LEFT { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { PUSH mutez 0 ; AMOUNT ; COMPARE ; NEQ ; PUSH string "XTZ" ; DUP 3 ; GET 9 ; COMPARE ; NEQ ; AND ; IF { DROP 2 ; PUSH nat 133 ; FAILWITH } { DUP ; GET 7 ; DUP 2 ; GET 5 ; COMPARE ; GT ; IF { DROP 2 ; PUSH nat 120 ; FAILWITH } { DUP 2 ; GET 21 ; DUP 2 ; GET 9 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } { DROP } ; DUP ; GET 3 ; DUP 2 ; CAR ; SENDER ; PAIR 3 ; DUP 3 ; GET 13 ; DUP 2 ; GET ; IF_NONE { DROP 3 ; PUSH nat 116 ; FAILWITH } { NIL operation ; DUP 2 ; GET 6 ; DUP 5 ; GET 9 ; COMPARE ; EQ ; IF { PUSH string "XTZ" ; DUP 5 ; GET 9 ; COMPARE ; EQ ; IF { DUP 4 ; GET 10 ; AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; COMPARE ; NEQ ; IF { DROP ; PUSH nat 140 ; FAILWITH } { PUSH mutez 1 ; DUP 3 ; CAR ; MUL ; SENDER ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } } { DUP 2 ; CAR ; DUP 5 ; GET 10 ; SUB ; ISNAT ; IF_NONE { DUP 5 ; SENDER ; SELF_ADDRESS ; DUP 7 ; GET 9 ; DUP 8 ; GET 10 ; DUP 7 ; CAR ; SUB ; ABS ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } { PUSH nat 0 ; DUP 2 ; COMPARE ; NEQ ; IF { DUP 6 ; SELF_ADDRESS ; SENDER ; DUP 8 ; GET 9 ; DIG 4 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } { DROP } } } } { PUSH string "XTZ" ; DUP 5 ; GET 9 ; COMPARE ; EQ ; IF { DUP 5 ; SENDER ; SELF_ADDRESS ; DUP 5 ; GET 6 ; DUP 6 ; CAR ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } { PUSH string "XTZ" ; DUP 3 ; GET 6 ; COMPARE ; EQ ; IF { DUP 5 ; SELF_ADDRESS ; SENDER ; DUP 7 ; GET 9 ; DUP 8 ; GET 10 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } ; PUSH mutez 1 ; DUP 3 ; CAR ; MUL ; SENDER ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DUP 5 ; SELF_ADDRESS ; SENDER ; DUP 7 ; GET 9 ; DUP 8 ; GET 10 ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } ; DUP 5 ; SENDER ; SELF_ADDRESS ; DUP 5 ; GET 6 ; DUP 6 ; CAR ; DIG 5 ; PAIR 6 ; UNPAIR 6 ; DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } } ; DUP 5 ; DIG 5 ; GET 13 ; DIG 3 ; DUP 6 ; GET 10 ; UPDATE 1 ; DUP 6 ; GET 5 ; UPDATE 3 ; DUP 6 ; GET 7 ; UPDATE 5 ; DIG 5 ; GET 9 ; UPDATE 6 ; SOME ; DIG 4 ; UPDATE ; UPDATE 13 ; SWAP ; PAIR } } } } } { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "updateOracleAddress" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address address) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %updateOracleAddress address ; IF_NONE { DROP ; PUSH string "no updateOracleAddress entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 25 ; NIL operation } ; PAIR } } } } } { IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "updateRoyalties" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address nat) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %updateRoyalties nat ; IF_NONE { DROP ; PUSH string "no updateRoyalties entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 15 ; NIL operation } } { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "updateRoyaltiesAddress" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address address) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %updateRoyaltiesAddress address ; IF_NONE { DROP ; PUSH string "no updateRoyaltiesAddress entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 3 ; NIL operation } } ; PAIR } { IF_LEFT { DUP 2 ; GET 19 ; IF { DROP 2 ; PUSH nat 117 ; FAILWITH } { DUP 2 ; GET 11 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH nat 103 ; FAILWITH } {} ; DUP ; CAR ; SENDER ; COMPARE ; NEQ ; IF { DROP 3 ; PUSH nat 122 ; FAILWITH } { DUP 2 ; CDR ; IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; GET 15 ; NOW ; COMPARE ; GE ; DUP 3 ; GET 7 ; AND ; DUP 3 ; GET 7 ; NOT ; OR ; IF { DROP 4 ; PUSH nat 129 ; FAILWITH } { DUP 4 ; GET 11 ; DUG 2 ; INT ; UPDATE 17 ; SOME ; DIG 2 ; CAR ; PAIR 3 ; UNPAIR 3 ; UPDATE ; UPDATE 11 ; NIL operation ; PAIR } } { DUP 2 ; GET 15 ; NOW ; COMPARE ; GE ; DUP 3 ; GET 7 ; AND ; IF { DROP 4 ; PUSH nat 126 ; FAILWITH } { DUP 4 ; DIG 4 ; GET 11 ; DIG 3 ; DIG 3 ; UPDATE 13 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 11 ; NIL operation ; PAIR } } } { IF_LEFT { DUP 4 ; DIG 4 ; GET 11 ; DIG 3 ; DIG 3 ; UPDATE 21 ; PUSH bool True ; UPDATE 9 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 11 ; NIL operation ; PAIR } { DUP 2 ; GET 15 ; NOW ; COMPARE ; GE ; DUP 3 ; GET 7 ; AND ; DUP 3 ; GET 7 ; NOT ; OR ; IF { DROP 4 ; PUSH nat 130 ; FAILWITH } { DUP 4 ; DIG 4 ; GET 11 ; DIG 3 ; DIG 3 ; UPDATE 11 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 11 ; NIL operation ; PAIR } } } } { DUP ; CDR ; DUP 2 ; CAR ; COMPARE ; GE ; IF { DROP 4 ; PUSH nat 120 ; FAILWITH } { DUP 2 ; GET 15 ; NOW ; COMPARE ; GE ; DUP 3 ; GET 7 ; AND ; IF { DROP 4 ; PUSH nat 126 ; FAILWITH } { DUP 4 ; DIG 4 ; GET 11 ; DIG 3 ; DUP 4 ; CAR ; UPDATE 15 ; DIG 3 ; CDR ; UPDATE 19 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 11 ; NIL operation ; PAIR } } } } } } { DUP 2 ; GET 27 ; SENDER ; COMPARE ; NEQ ; IF { SELF_ADDRESS ; DUP 3 ; DIG 3 ; GET 27 ; CONTRACT %callMultisig (pair (pair %entrypoint_signature (string %name) (pair (bytes %params) (address %source_contract))) (lambda %callback unit (list operation))) ; IF_NONE { SWAP ; DIG 2 ; DROP 2 ; PUSH string "no call entrypoint" ; FAILWITH } { DUP 4 ; PACK ; SHA256 ; SELF_ADDRESS ; SWAP ; PUSH string "updateTreasuryAddress" ; PAIR 3 ; SWAP ; PUSH mutez 0 ; LAMBDA (pair (pair address address) unit) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; DROP ; CONTRACT %updateTreasuryAddress address ; IF_NONE { DROP ; PUSH string "no updateTreasuryAddress entrypoint" ; FAILWITH } { NIL operation ; SWAP ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } ; DUP 7 ; DUP 7 ; PAIR ; APPLY ; DIG 5 ; DIG 6 ; DROP 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; SWAP ; CONS } } { UPDATE 29 ; NIL operation } ; PAIR } } } { IF_LEFT { DUP ; GET 4 ; DUP 2 ; CAR ; SENDER ; DUP 4 ; GET 3 ; PAIR 4 ; DUP 3 ; GET 9 ; DUP 2 ; MEM ; NOT ; IF { DROP 3 ; PUSH nat 141 ; FAILWITH } { NIL operation ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DUP 6 ; CAR ; SENDER ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; DIG 3 ; GET 4 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; SWAP ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS ; DUP 3 ; DIG 3 ; GET 9 ; NONE (pair (pair (pair timestamp nat) (pair address timestamp)) string) ; DIG 4 ; UPDATE ; UPDATE 9 ; SWAP ; PAIR } } { UNPAIR ; SENDER ; PAIR 3 ; DUP 2 ; GET 13 ; DUP 2 ; GET ; IF_NONE { DROP 2 ; PUSH nat 116 ; FAILWITH } { DUP 3 ; SENDER ; SELF_ADDRESS ; DUP 4 ; GET 6 ; DIG 4 ; CAR ; NIL operation ; PAIR 6 ; UNPAIR 6 ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { PUSH string "XTZ" ; DUP 4 ; COMPARE ; EQ ; IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH mutez 1 ; DIG 2 ; MUL ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH nat 106 ; FAILWITH } {} ; SWAP ; UNIT ; TRANSFER_TOKENS ; CONS } { DIG 5 ; GET 21 ; DIG 3 ; GET ; IF_NONE { PUSH nat 131 ; FAILWITH } {} ; PUSH string "fa1.2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH nat 132 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { PUSH string "fa2" ; DUP 2 ; GET 4 ; COMPARE ; EQ ; IF { GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 4 ; PUSH nat 0 ; DIG 7 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; MAP { DUP ; CDR ; MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; PAIR ; SWAP ; CAR ; PAIR } ; SWAP ; CAR ; PAIR } ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP 5 ; PUSH nat 149 ; FAILWITH } } } } { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } ; DUP 3 ; DIG 3 ; GET 13 ; NONE (pair nat (pair timestamp (pair timestamp string))) ; DIG 4 ; UPDATE ; UPDATE 13 ; SWAP ; PAIR } } } } }