x
802
1264
parameter (or (or (or (nat %cancel_swap) (or (pair %collect (nat %swap_id) (nat %token_amount)) (list %handle_fee_callback (pair (pair (address %creator) (map %royalties address nat)) (pair (nat %token_id) (nat %total_royalties)))))) (or (mutez %set_lowest_price) (or (pair %set_metadata (string %k) (bytes %v)) (pair %swap (pair (map %revenue_share address nat) (nat %token_amount)) (pair (address %token_fa2) (pair (nat %token_id) (mutez %xtz_per_token))))))) (or (or (list %update_akaDAO_fa2_whitelist (or (address %add_address) (address %remove_address))) (or (list %update_akaDAO_issuer_blacklist (or (address %add_address) (address %remove_address))) (nat %update_collect_limit))) (or (nat %update_management_fee) (or (address %update_manager) (list %update_swap_fa2_whitelist (or (address %add_address) (address %remove_address)))))));storage (pair (pair (pair (address %akaDAOAdmin) (pair (big_map %akaDAO_fa2_whitelist address unit) (big_map %akaDAO_issuer_blacklist address unit))) (pair (pair (address %akaRoyalty) (bool %akaRoyalty_callback_expected)) (pair (nat %collect_limit) (mutez %handle_fee_amount)))) (pair (pair (pair (nat %handle_fee_swap_id) (mutez %lowest_price)) (pair (nat %management_fee) (address %manager))) (pair (pair (big_map %metadata string bytes) (big_map %swap_fa2_whitelist address unit)) (pair (nat %swap_id) (big_map %swaps nat (pair (pair (address %issuer) (pair (map %revenue_share address nat) (nat %token_amount))) (pair (address %token_fa2) (pair (nat %token_id) (mutez %xtz_per_token)))))))));code { UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 8 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 144 ; FAILWITH } {} ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_ISSUER_OR_MANAGER" ; FAILWITH } ; NIL operation ; DUP 3 ; GET 8 ; DUP 3 ; GET ; IF_NONE { PUSH int 145 ; FAILWITH } {} ; GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 228 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 7 ; GET 8 ; DUP 7 ; GET ; IF_NONE { PUSH int 145 ; FAILWITH } {} ; CAR ; GET 4 ; DUP 8 ; GET 8 ; DUP 8 ; GET ; IF_NONE { PUSH int 145 ; FAILWITH } {} ; GET 5 ; DUP 9 ; GET 8 ; DUP 9 ; GET ; IF_NONE { PUSH int 145 ; FAILWITH } {} ; CAR ; CAR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DIG 2 ; DUP ; GET 8 ; NONE (pair (pair address (pair (map address nat) nat)) (pair address (pair nat mutez))) ; DIG 4 ; UPDATE ; UPDATE 8 ; SWAP } { IF_LEFT { DUP ; CDR ; PUSH nat 0 ; COMPARE ; LT ; IF { SWAP ; DUP ; DUG 2 ; GET 8 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 157 ; FAILWITH } {} ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; CDR ; COMPARE ; LE } { PUSH bool False } ; IF { SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; CDR ; COMPARE ; LE } { PUSH bool False } ; IF { SWAP ; DUP ; DUG 2 ; GET 8 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 157 ; FAILWITH } {} ; CAR ; CAR ; SENDER ; COMPARE ; NEQ } { PUSH bool False } ; IF {} { PUSH string "BASIC_WRONG" ; FAILWITH } ; PUSH mutez 0 ; DUP 3 ; GET 8 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 165 ; FAILWITH } {} ; GET 6 ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; GET 8 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 167 ; FAILWITH } {} ; GET 6 ; AMOUNT ; EDIV ; IF_NONE { PUSH int 167 ; FAILWITH } {} ; CAR ; SWAP ; DUP ; DUG 2 ; CDR ; COMPARE ; EQ ; IF { PUSH mutez 1 ; DUP ; DUP 4 ; GET 8 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 169 ; FAILWITH } {} ; GET 6 ; EDIV ; IF_NONE { PUSH int 169 ; FAILWITH } {} ; CAR ; DUP 4 ; GET 8 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 167 ; FAILWITH } {} ; GET 6 ; AMOUNT ; EDIV ; IF_NONE { PUSH int 167 ; FAILWITH } {} ; CAR ; MUL ; MUL ; AMOUNT ; COMPARE ; EQ } { PUSH bool False } ; IF { PUSH mutez 0 ; AMOUNT ; COMPARE ; GT } { PUSH bool False } ; IF {} { PUSH string "WrongCondition: ((params.token_amount == sp.fst(sp.ediv(sp.amount, self.data.swaps[params.swap_id].xtz_per_token).open_some())) & (sp.amount == sp.mul(sp.fst(sp.ediv(sp.amount, self.data.swaps[params.swap_id].xtz_per_token).open_some()) * sp.fst(sp.ediv(self.data.swaps[params.swap_id].xtz_per_token, sp.mutez(1)).open_some()), sp.mutez(1)))) & (sp.amount > sp.tez(0))" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; CAR ; PUSH bool True ; SWAP ; PAIR ; SWAP ; CAR ; AMOUNT ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; UNPAIR ; UNPAIR ; CDR ; DUP 5 ; CAR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; NIL operation ; DUP 3 ; CAR ; GET 3 ; CAR ; CONTRACT %get_royalty (pair (contract (list (pair (pair address (map address nat)) (pair nat nat)))) (list (pair address nat))) ; IF_NONE { PUSH int 177 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address nat) ; DUP 6 ; GET 8 ; DUP 6 ; CAR ; GET ; IF_NONE { PUSH int 179 ; FAILWITH } {} ; GET 5 ; DUP 7 ; GET 8 ; DUP 7 ; CAR ; GET ; IF_NONE { PUSH int 179 ; FAILWITH } {} ; GET 3 ; PAIR ; CONS ; SELF_ADDRESS ; CONTRACT %handle_fee_callback (list (pair (pair address (map address nat)) (pair nat nat))) ; IF_NONE { PUSH int 178 ; FAILWITH } {} ; PAIR ; TRANSFER_TOKENS ; CONS ; DIG 2 ; DUP ; CAR ; CAR ; GET 3 ; SWAP ; DUP ; DUG 4 ; GET 8 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 182 ; FAILWITH } {} ; GET 3 ; MEM ; IF { DIG 2 ; DUP ; CAR ; CAR ; GET 4 ; SWAP ; DUP ; DUG 4 ; GET 8 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 182 ; FAILWITH } {} ; CAR ; CAR ; MEM ; NOT } { PUSH bool False } ; IF { SWAP ; DUP ; DUG 2 ; CDR ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DIG 2 ; DUP 5 ; CAR ; CAR ; CAR ; CONTRACT %assign_akaDAO (pair address (pair address nat)) ; IF_NONE { PUSH int 184 ; FAILWITH } {} ; PUSH mutez 0 ; PUSH mutez 1 ; DUP 8 ; GET 8 ; DUP 8 ; CAR ; GET ; IF_NONE { PUSH int 183 ; FAILWITH } {} ; GET 6 ; EDIV ; IF_NONE { PUSH int 183 ; FAILWITH } {} ; CAR ; DUP 8 ; GET 8 ; DUP 8 ; CAR ; GET ; IF_NONE { PUSH int 186 ; FAILWITH } {} ; CAR ; CAR ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 } {} } { NIL operation } ; DUP 3 ; GET 8 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 188 ; FAILWITH } {} ; GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 228 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 6 ; CDR ; DUP 8 ; GET 8 ; DUP 8 ; CAR ; GET ; IF_NONE { PUSH int 188 ; FAILWITH } {} ; GET 5 ; SENDER ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DUP 3 ; DUP ; GET 8 ; DUP ; DUP 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 190 ; FAILWITH } {} ; UNPAIR ; UNPAIR ; SWAP ; CAR ; DUP 8 ; CDR ; DIG 9 ; GET 8 ; DIG 9 ; CAR ; GET ; IF_NONE { PUSH int 190 ; FAILWITH } {} ; CAR ; GET 4 ; SUB ; ABS ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SOME ; SWAP ; UPDATE ; UPDATE 8 ; SWAP } { SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_AKAROYALTY" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; CDR ; IF {} { PUSH string "NOT_CALLBACK_EXPECTED" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; CAR ; PUSH bool False ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; DUP ; NIL operation ; SWAP ; ITER { DUP 4 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; GET 4 ; ADD ; SWAP ; DUP ; DUG 2 ; GET 4 ; PUSH nat 1000 ; DUP 7 ; GET 3 ; GET 3 ; DUP 5 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 9 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; MUL ; EDIV ; IF_NONE { PUSH int 204 ; FAILWITH } { CAR } ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; ITER { DUP 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; COMPARE ; NEQ ; IF { DIG 3 ; SWAP ; DUP ; DUG 2 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 237 ; FAILWITH } {} ; PUSH mutez 1 ; DUP 6 ; GET 4 ; DUP 5 ; CDR ; DUP 10 ; GET 3 ; GET 3 ; DUP 9 ; GET 4 ; ADD ; DUP 9 ; GET 4 ; PUSH nat 1000 ; DUP 13 ; GET 3 ; GET 3 ; DUP 12 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 15 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; MUL ; EDIV ; IF_NONE { PUSH int 204 ; FAILWITH } { CAR } ; MUL ; EDIV ; IF_NONE { PUSH int 236 ; FAILWITH } { CAR } ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS ; DUG 3 ; DUP 3 ; GET 4 ; SWAP ; CDR ; DUP 7 ; GET 3 ; GET 3 ; DUP 5 ; GET 4 ; ADD ; DUP 5 ; GET 4 ; PUSH nat 1000 ; DUP 10 ; GET 3 ; GET 3 ; DUP 8 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 12 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; MUL ; EDIV ; IF_NONE { PUSH int 204 ; FAILWITH } { CAR } ; MUL ; EDIV ; IF_NONE { PUSH int 236 ; FAILWITH } { CAR } ; SWAP ; SUB ; ABS } { DROP } } ; DUG 2 ; DUP ; DUG 3 ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 239 ; FAILWITH } {} ; PUSH mutez 1 ; DUP 4 ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS ; DUP 5 ; GET 3 ; GET 4 ; CONTRACT unit ; IF_NONE { PUSH int 216 ; FAILWITH } {} ; PUSH mutez 1 ; DUP 7 ; GET 3 ; GET 3 ; DUP 6 ; GET 4 ; ADD ; DUP 6 ; GET 4 ; PUSH nat 1000 ; DUP 10 ; GET 3 ; GET 3 ; DUP 9 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 12 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; MUL ; EDIV ; IF_NONE { PUSH int 204 ; FAILWITH } { CAR } ; PUSH nat 1000 ; DUP 9 ; GET 3 ; GET 3 ; DUP 8 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 11 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; SUB ; ABS ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS ; DUG 2 ; PUSH nat 1000 ; DUP 6 ; GET 3 ; GET 3 ; DUP 4 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 8 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; PUSH mutez 1 ; DUP 7 ; CAR ; GET 6 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; SUB ; ABS ; DIG 5 ; DUP ; GET 8 ; SWAP ; DUP ; DUG 7 ; GET 3 ; CAR ; CAR ; GET ; IF_NONE { PUSH int 219 ; FAILWITH } {} ; CAR ; GET 3 ; ITER { DIG 6 ; DUP ; GET 8 ; SWAP ; DUP ; DUG 8 ; GET 3 ; CAR ; CAR ; GET ; IF_NONE { PUSH int 219 ; FAILWITH } {} ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; COMPARE ; NEQ ; IF { DIG 4 ; SWAP ; DUP ; DUG 2 ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 246 ; FAILWITH } {} ; PUSH mutez 1 ; PUSH nat 1000 ; DUP 5 ; CDR ; PUSH nat 1000 ; DUP 12 ; GET 3 ; GET 3 ; DUP 11 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 14 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; PUSH mutez 1 ; DUP 13 ; CAR ; GET 6 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; SUB ; ABS ; MUL ; EDIV ; IF_NONE { PUSH int 245 ; FAILWITH } { CAR } ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS ; DUG 4 ; CDR ; PUSH nat 1000 ; SWAP ; PUSH nat 1000 ; DUP 9 ; GET 3 ; GET 3 ; DUP 7 ; GET 4 ; ADD ; PUSH mutez 1 ; DUP 11 ; CAR ; GET 6 ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } {} ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 203 ; FAILWITH } { CAR } ; PUSH mutez 1 ; DUP 10 ; CAR ; GET 6 ; EDIV ; IF_NONE { UNIT ; FAILWITH } {} ; CAR ; SUB ; ABS ; MUL ; EDIV ; IF_NONE { PUSH int 245 ; FAILWITH } { CAR } ; SWAP ; SUB ; ABS } { DROP } } ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DIG 3 ; DUP ; GET 8 ; SWAP ; DUP ; DUG 5 ; GET 3 ; CAR ; CAR ; GET ; IF_NONE { PUSH int 219 ; FAILWITH } {} ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 248 ; FAILWITH } {} ; PUSH mutez 1 ; DIG 3 ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS } ; SWAP ; DROP } } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CAR ; DIG 4 ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; DUP 6 ; CDR ; SOME ; DIG 6 ; CAR ; UPDATE ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; NIL operation } { DUP ; CAR ; CDR ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "ZERO_AMOUNT" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; CDR ; SWAP ; DUP ; DUG 2 ; GET 6 ; COMPARE ; GE ; IF {} { PUSH string "PRICE_TOO_LOW" ; FAILWITH } ; PUSH nat 0 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; ITER { DUP ; CDR ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "WrongCondition: revenue.value > 0" ; FAILWITH } ; CDR ; ADD } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; SENDER ; MEM ; IF {} { PUSH string "WrongCondition: params.revenue_share.contains(sp.sender)" ; FAILWITH } ; PUSH nat 1000 ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: totalRevenue.value == 1000" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; CDR ; SWAP ; DUP ; DUG 2 ; GET 3 ; MEM ; IF {} { PUSH string "NOT_ALLOWED_FA2_SWAP" ; FAILWITH } ; DUP ; GET 3 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 228 ; 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 ; CAR ; CDR ; SWAP ; DUP ; DUG 7 ; GET 5 ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DUP 3 ; DUP ; GET 8 ; DIG 3 ; DUP ; GET 6 ; SWAP ; DUP ; DUG 5 ; GET 5 ; PAIR ; DUP 5 ; GET 3 ; PAIR ; DIG 4 ; DUP ; CAR ; CDR ; SWAP ; CAR ; CAR ; PAIR ; SENDER ; PAIR ; PAIR ; SOME ; DIG 4 ; GET 7 ; UPDATE ; UPDATE 8 ; DUP ; GET 7 ; PUSH nat 1 ; ADD ; UPDATE 7 ; SWAP } } } } { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; DUP ; ITER { IF_LEFT { DIG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; PUSH (option unit) (Some Unit) ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP } { DIG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; NONE unit ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP } } ; DROP } { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; DUP ; ITER { IF_LEFT { DIG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; PUSH (option unit) (Some Unit) ; DIG 6 ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP } { DIG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; NONE unit ; DIG 6 ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP } } ; DROP } { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DIG 4 ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR } { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CAR ; DIG 4 ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR } { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_MANAGER" ; FAILWITH } ; DUP ; ITER { IF_LEFT { DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; PUSH (option unit) (Some Unit) ; DIG 6 ; UPDATE ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP } { DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; NONE unit ; DIG 6 ; UPDATE ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP } } ; DROP } } } ; NIL operation } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }