x
777
1261
{ parameter (or (pair %transfer (address %caller_alias) (pair (address %to_) (nat %amount))) (or (pair %approve (address %caller_alias) (pair (address %spender) (nat %amount))) (or (pair %transferFrom (address %caller_alias) (pair (address %from_) (pair (address %to_) (nat %amount)))) (or (pair %mint (address %caller_alias) (pair (address %to_) (nat %amount))) (or (pair %burn (address %caller_alias) (pair (address %from_) (nat %amount))) (or (pair %freezePartial (address %caller_alias) (pair (address %addr) (nat %amount))) (or (pair %unfreezePartial (address %caller_alias) (pair (address %addr) (nat %amount))) (or (pair %freezeAddress (address %caller_alias) (address %addr)) (or (pair %unfreezeAddress (address %caller_alias) (address %addr)) (or (pair %forcedTransfer (address %caller_alias) (pair (address %from_) (pair (address %to_) (nat %amount)))) (or (pair %recoveryAddress (address %caller_alias) (pair (address %lost_wallet) (pair (address %new_wallet) (address %investor_onchain_id)))) (or (address %pause) (or (address %unpause) (or (pair %setName (address %caller_alias) (string %new_name)) (or (pair %setSymbol (address %caller_alias) (string %new_symbol)) (or (pair %setOnchainID (address %caller_alias) (address %new_onchain_id)) (or (pair %setVersion (address %caller_alias) (string %new_version)) (or (pair %bindIR (address %caller_alias) (address %ir_addr)) (or (pair %bindMC (address %caller_alias) (address %mc_addr)) (or (pair %setOwner (address %caller_alias) (address %new_owner)) (address %setAdmin))))))))))))))))))))) ; storage (pair (address %admin) (pair (address %owner) (pair (address %admin_sentinel) (pair (address %bound_ir) (pair (address %bound_mc) (pair (big_map %balances address nat) (pair (big_map %allowances (pair address address) nat) (pair (nat %total_supply) (pair (big_map %frozen address nat) (pair (big_map %frozen_addrs address bool) (pair (bool %paused) (pair (string %name) (pair (string %symbol) (pair (nat %decimals) (pair (string %version) (address %onchain_id)))))))))))))))) ; code { LAMBDA address (contract (pair address (pair address nat))) { CONTRACT %transferred (pair (address %from_) (pair (address %to_) (nat %amount))) ; IF_NONE { PUSH string "TOKEN_MC_HOOK_NOT_FOUND" ; FAILWITH } {} } ; SWAP ; UNPAIR ; IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP ; CAR ; DUP 2 ; GET 4 ; DUP 3 ; GET 3 ; DUP 5 ; GET 21 ; IF { PUSH string "TOKEN_PAUSED" ; FAILWITH } {} ; DUP 5 ; GET 19 ; DUP 4 ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "TOKEN_FROZEN_ADDRESS" ; FAILWITH } {} ; DUP 5 ; GET 19 ; DUP 2 ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "TOKEN_FROZEN_ADDRESS" ; FAILWITH } {} ; DUP 2 ; DUP 6 ; GET 17 ; DUP 5 ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 7 ; GET 11 ; DUP 6 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH nat 0 } {} ; COMPARE ; LT ; IF { PUSH string "TOKEN_INSUFFICIENT_FREE_BALANCE" ; FAILWITH } {} ; DUP 5 ; GET 7 ; DUP 2 ; VIEW "isVerified" bool ; IF_NONE { PUSH string "TOKEN_IR_VIEW_FAILED" ; FAILWITH } { IF {} { PUSH string "TOKEN_NOT_VERIFIED_RECIPIENT" ; FAILWITH } } ; DUP 5 ; GET 9 ; DUG 2 ; DUP 4 ; PAIR 3 ; VIEW "canTransfer" bool ; IF_NONE { PUSH string "TOKEN_MC_VIEW_FAILED" ; FAILWITH } { IF {} { PUSH string "TOKEN_COMPLIANCE_DENIED" ; FAILWITH } } ; DUP 2 ; GET 4 ; DUP 3 ; GET 3 ; DUP 2 ; DUP 6 ; GET 11 ; DUP 5 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "TOKEN_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; DUP 6 ; DUP 2 ; INT ; EQ ; IF { SWAP ; DROP ; DIG 5 ; GET 11 ; NONE nat ; DUP 6 ; UPDATE } { DIG 6 ; GET 11 ; DIG 2 ; SOME ; DUP 6 ; UPDATE } ; UPDATE 11 ; DIG 2 ; DUP 2 ; GET 11 ; DUP 4 ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 2 ; DUP 2 ; INT ; EQ ; IF { SWAP ; DROP ; SWAP ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { DIG 2 ; GET 11 ; DIG 2 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DUP ; GET 9 ; DIG 4 ; SWAP ; EXEC ; PUSH mutez 0 ; DUP 5 ; GET 4 ; DIG 5 ; GET 3 ; DIG 5 ; PAIR 3 ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP ; GET 4 ; DUP 2 ; GET 3 ; DIG 2 ; CAR ; DUP 4 ; DUP 4 ; INT ; EQ ; IF { DIG 3 ; DROP ; DIG 3 ; GET 13 ; NONE nat ; DIG 4 ; DIG 4 ; PAIR ; UPDATE } { DIG 4 ; GET 13 ; DIG 4 ; SOME ; DIG 4 ; DIG 4 ; PAIR ; UPDATE } ; UPDATE 13 ; NIL operation } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP ; GET 6 ; DUP 3 ; GET 13 ; DUP 3 ; CAR ; DUP 4 ; GET 3 ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "TOKEN_INSUFFICIENT_ALLOWANCE" ; FAILWITH } {} ; DUP 2 ; GET 6 ; DUP 3 ; GET 5 ; DUP 4 ; GET 3 ; DUP 6 ; GET 21 ; IF { PUSH string "TOKEN_PAUSED" ; FAILWITH } {} ; DUP 6 ; GET 19 ; DUP 2 ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "TOKEN_FROZEN_ADDRESS" ; FAILWITH } {} ; DUP 6 ; GET 19 ; DUP 3 ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "TOKEN_FROZEN_ADDRESS" ; FAILWITH } {} ; DUP 3 ; DUP 7 ; GET 17 ; DUP 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 8 ; GET 11 ; DUP 4 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH nat 0 } {} ; COMPARE ; LT ; IF { PUSH string "TOKEN_INSUFFICIENT_FREE_BALANCE" ; FAILWITH } {} ; DUP 6 ; GET 7 ; DUP 3 ; VIEW "isVerified" bool ; IF_NONE { PUSH string "TOKEN_IR_VIEW_FAILED" ; FAILWITH } { IF {} { PUSH string "TOKEN_NOT_VERIFIED_RECIPIENT" ; FAILWITH } } ; DUP 6 ; GET 9 ; DUG 3 ; PAIR 3 ; VIEW "canTransfer" bool ; IF_NONE { PUSH string "TOKEN_MC_VIEW_FAILED" ; FAILWITH } { IF {} { PUSH string "TOKEN_COMPLIANCE_DENIED" ; FAILWITH } } ; DUP 2 ; GET 6 ; DUP 3 ; GET 5 ; DUP 4 ; GET 3 ; DUP 5 ; CAR ; DUP 6 ; GET 3 ; DUP 8 ; DUP 7 ; INT ; EQ ; IF { DIG 6 ; DROP ; DIG 7 ; GET 13 ; NONE nat ; DIG 4 ; DIG 4 ; PAIR ; UPDATE } { DIG 8 ; GET 13 ; DIG 7 ; SOME ; DIG 4 ; DIG 4 ; PAIR ; UPDATE } ; UPDATE 13 ; DUP 4 ; DUP 2 ; GET 11 ; DUP 4 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "TOKEN_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; DUP 2 ; DUP 2 ; INT ; EQ ; IF { SWAP ; DROP ; SWAP ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { DIG 2 ; GET 11 ; DIG 2 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DIG 2 ; DUP 2 ; GET 11 ; DUP 4 ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 2 ; DUP 2 ; INT ; EQ ; IF { SWAP ; DROP ; SWAP ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { DIG 2 ; GET 11 ; DIG 2 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DUP ; GET 9 ; DIG 3 ; SWAP ; EXEC ; PUSH mutez 0 ; DUP 4 ; GET 6 ; DUP 5 ; GET 5 ; DIG 5 ; GET 3 ; PAIR 3 ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 21 ; IF { PUSH string "TOKEN_PAUSED" ; FAILWITH } {} ; DUP 2 ; GET 7 ; DUP 2 ; GET 3 ; VIEW "isVerified" bool ; IF_NONE { PUSH string "TOKEN_IR_VIEW_FAILED" ; FAILWITH } { IF {} { PUSH string "TOKEN_NOT_VERIFIED_RECIPIENT" ; FAILWITH } } ; DUP ; GET 4 ; DUP 3 ; GET 11 ; DUP 3 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 2 ; GET 3 ; DUP 4 ; DUP 3 ; INT ; EQ ; IF { DIG 2 ; DROP ; DIG 3 ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { DIG 4 ; GET 11 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DUP ; DUP 3 ; GET 4 ; DIG 2 ; GET 15 ; ADD ; UPDATE 15 ; DUP ; GET 9 ; CONTRACT %created (pair (address %to_) (nat %amount)) ; IF_NONE { PUSH string "TOKEN_MC_HOOK_NOT_FOUND" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 4 ; GET 4 ; DIG 4 ; GET 3 ; PAIR ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 21 ; IF { PUSH string "TOKEN_PAUSED" ; FAILWITH } {} ; DUP ; GET 4 ; DUP 3 ; GET 11 ; DUP 3 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "TOKEN_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 4 ; DUP 3 ; INT ; EQ ; IF { DUP 5 ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { DUP 5 ; GET 11 ; DUP 4 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DUP 2 ; DIG 4 ; GET 17 ; DUP 5 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; COMPARE ; GT ; IF { DUP 3 ; GET 3 ; DUP 2 ; DUP 4 ; INT ; EQ ; IF { DIG 3 ; DROP ; DIG 2 ; GET 17 ; NONE nat ; DIG 3 ; UPDATE } { DIG 2 ; GET 17 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 17 } { SWAP ; DROP } ; DUP ; DUP 3 ; GET 4 ; DIG 2 ; GET 15 ; SUB ; ISNAT ; IF_NONE { PUSH string "TOKEN_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; UPDATE 15 ; DUP ; GET 9 ; CONTRACT %destroyed (pair (address %from_) (nat %amount)) ; IF_NONE { PUSH string "TOKEN_MC_HOOK_NOT_FOUND" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 4 ; GET 4 ; DIG 4 ; GET 3 ; PAIR ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 11 ; DUP 2 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 2 ; GET 4 ; DUP 4 ; GET 17 ; DUP 4 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { DROP } { SWAP ; DROP } ; SWAP ; GET 3 ; DUP 3 ; DUP 3 ; INT ; EQ ; IF { DIG 2 ; DROP ; DIG 2 ; GET 17 ; NONE nat ; DIG 3 ; UPDATE } { DIG 3 ; GET 17 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 17 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP ; GET 4 ; DUP 3 ; GET 17 ; DUP 3 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH nat 0 } {} ; SWAP ; GET 3 ; DUP 3 ; DUP 3 ; INT ; EQ ; IF { DIG 2 ; DROP ; DIG 2 ; GET 17 ; NONE nat ; DIG 3 ; UPDATE } { DIG 3 ; GET 17 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 17 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; SWAP ; DUP ; GET 19 ; PUSH bool True ; SOME ; DIG 3 ; CDR ; UPDATE ; UPDATE 19 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; SWAP ; DUP ; GET 19 ; PUSH bool False ; SOME ; DIG 3 ; CDR ; UPDATE ; UPDATE 19 ; NIL operation } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 21 ; IF { PUSH string "TOKEN_PAUSED" ; FAILWITH } {} ; DUP 2 ; GET 7 ; DUP 2 ; GET 5 ; VIEW "isVerified" bool ; IF_NONE { PUSH string "TOKEN_IR_VIEW_FAILED" ; FAILWITH } { IF {} { PUSH string "TOKEN_NOT_VERIFIED_RECIPIENT" ; FAILWITH } } ; DUP ; GET 5 ; DUP 2 ; GET 3 ; COMPARE ; EQ ; IF { DROP ; SWAP ; DROP ; NIL operation } { DUP ; GET 6 ; DUP 3 ; GET 11 ; DUP 3 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "TOKEN_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 4 ; DUP 3 ; INT ; EQ ; IF { DUP 5 ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { DUP 5 ; GET 11 ; DUP 4 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DUP 2 ; DIG 4 ; GET 17 ; DUP 5 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; COMPARE ; GT ; IF { DUP 3 ; GET 3 ; DUP 2 ; DUP 4 ; INT ; EQ ; IF { DIG 3 ; DROP ; DIG 2 ; GET 17 ; NONE nat ; DIG 3 ; UPDATE } { DIG 2 ; GET 17 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 17 } { SWAP ; DROP } ; DUP 2 ; GET 6 ; DUP 2 ; GET 11 ; DUP 4 ; GET 5 ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 3 ; GET 5 ; DIG 2 ; DUP ; DUP 4 ; INT ; EQ ; IF { DIG 3 ; DROP ; SWAP ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { SWAP ; GET 11 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DUP ; GET 9 ; DIG 3 ; SWAP ; EXEC ; PUSH mutez 0 ; DUP 4 ; GET 6 ; DUP 5 ; GET 5 ; DIG 5 ; GET 3 ; PAIR 3 ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 21 ; IF { PUSH string "TOKEN_PAUSED" ; FAILWITH } {} ; DUP 2 ; GET 7 ; DUP 2 ; GET 5 ; VIEW "isVerified" bool ; IF_NONE { PUSH string "TOKEN_IR_VIEW_FAILED" ; FAILWITH } {} ; IF {} { PUSH string "TOKEN_RECOVERY_IDENTITY_MISMATCH" ; FAILWITH } ; DUP 2 ; GET 7 ; DUP 2 ; GET 5 ; VIEW "identityOf" address ; IF_NONE { PUSH string "TOKEN_RECOVERY_IDENTITY_MISMATCH" ; FAILWITH } {} ; DUP 2 ; GET 6 ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_RECOVERY_IDENTITY_MISMATCH" ; FAILWITH } {} ; DUP 2 ; GET 11 ; DUP 2 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP ; INT ; EQ ; IF { PUSH string "TOKEN_RECOVERY_NO_BALANCE" ; FAILWITH } {} ; PUSH nat 0 ; DUP 3 ; GET 3 ; DUP 5 ; DUP 3 ; INT ; EQ ; IF { DIG 2 ; DROP ; DUP 5 ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { DUP 6 ; GET 11 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; DUP 2 ; DUP 2 ; GET 11 ; DUP 5 ; GET 5 ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 4 ; GET 5 ; DIG 2 ; DUP ; DUP 4 ; INT ; EQ ; IF { DIG 3 ; DROP ; SWAP ; GET 11 ; NONE nat ; DIG 3 ; UPDATE } { SWAP ; GET 11 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 11 ; PUSH nat 0 ; DUP 4 ; GET 3 ; DUP 3 ; DUP 3 ; INT ; EQ ; IF { DIG 2 ; DROP ; DIG 2 ; GET 17 ; NONE nat ; DIG 3 ; UPDATE } { DIG 3 ; GET 17 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 17 ; DIG 3 ; GET 17 ; DUP 4 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 2 ; GET 17 ; DUP 5 ; GET 5 ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 4 ; GET 5 ; DIG 2 ; DUP ; DUP 4 ; INT ; EQ ; IF { DIG 3 ; DROP ; SWAP ; GET 17 ; NONE nat ; DIG 3 ; UPDATE } { SWAP ; GET 17 ; DIG 3 ; SOME ; DIG 3 ; UPDATE } ; UPDATE 17 ; DUP ; GET 9 ; DIG 4 ; SWAP ; EXEC ; PUSH mutez 0 ; DIG 3 ; DUP 5 ; GET 5 ; DIG 5 ; GET 3 ; PAIR 3 ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } { DIG 2 ; DROP ; IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; PUSH bool True ; UPDATE 21 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; PUSH bool False ; UPDATE 21 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 23 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 25 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 30 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 29 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 5 ; DUP 3 ; GET 7 ; COMPARE ; EQ ; IF {} { PUSH string "TOKEN_ALREADY_BOUND_IR" ; FAILWITH } ; CDR ; UPDATE 7 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 5 ; DUP 3 ; GET 9 ; COMPARE ; EQ ; IF {} { PUSH string "TOKEN_ALREADY_BOUND_MC" ; FAILWITH } ; CDR ; UPDATE 9 } { IF_LEFT { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 3 } { DUP 2 ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "TOKEN_NOT_ADMIN" ; FAILWITH } {} ; UPDATE 1 } } } } } } } } } ; NIL operation } } } } } } } } } } } ; PAIR } ; view "balanceOf" address nat { UNPAIR ; SWAP ; GET 11 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} } ; view "allowance" (pair address address) nat { UNPAIR ; UNPAIR ; DIG 2 ; GET 13 ; DUG 2 ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} } ; view "getFrozenTokens" address nat { UNPAIR ; SWAP ; GET 17 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} } ; view "isFrozen" address bool { UNPAIR ; SWAP ; GET 19 ; SWAP ; GET ; IF_NONE { PUSH bool False } {} } ; view "totalSupply" unit nat { GET 17 } ; view "name" unit string { GET 25 } ; view "symbol" unit string { GET 27 } ; view "decimals" unit nat { GET 29 } ; view "paused" unit bool { GET 23 } ; view "onchainID" unit address { GET 32 } ; view "version" unit string { GET 31 } }