x
804
{ parameter (or (or (or (or (or (list %clean_holders address) (unit %restrict_to_whitelist)) (or (unit %open_to_all) (address %declare_ownership))) (or (or (unit %claim_ownership) (unit %pause)) (or (unit %unpause) (bool %manage_rafle)))) (or (or (or (mutez %set_token_price) (nat %set_total_supply)) (or (pair %set_metadata (string %k) (option %d bytes)) (list %adds_to_whitelist address))) (or (or (list %removes_from_whitelist address) (address %set_collection)) (or (address %add_orders_operator) (address %remove_orders_operator))))) (or (or (or (address %do_create_order) (unit %create_order)) (or (address %create_order_for) (address %confirm_order))) (or (or (pair %repay_order (address %target_address) (mutez %tez_amount)) (pair %drop (address %todrop) (nat %quantity))) (pair %collect (address %collector) (mutez %amount))))) ; storage (pair (address %owner) (address %collection) (mutez %token_price) (nat %total_supply) (nat %current_supply) (option %owner_candidate address) (bool %paused) (bool %rafle_is_closed) (bool %white_list_state) (big_map %holders address (pair (nat %holder_token_count) (int %holder_status))) (big_map %orders_operator address unit) (big_map %white_list address unit) (big_map %metadata string bytes)) ; code { LAMBDA nat bool { PUSH unit Unit ; PUSH nat 1 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH nat 2 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ; IF { PUSH bool True } { PUSH nat 4 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ; IF { PUSH bool True } { PUSH nat 10 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ; IF { PUSH bool True ; SWAP ; DROP 1 } { PUSH bool False ; SWAP ; DROP 1 } ; SWAP ; DROP 1 } ; NIL operation ; DIG 2 ; UNPAIR ; DIP 1 { UNPAIR 13 } ; IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP ; ITER { DUP 12 ; DUP 2 ; GET ; IF_NONE { PUSH string "HOLDER_UNKNOWN" ; FAILWITH } { PUSH int 0 ; DUP 2 ; GET 2 ; COMPARE ; EQ ; IF { PUSH string "HOLDER_STATUS_ERROR" ; FAILWITH } {} ; DUP 13 ; NONE (pair nat int) ; DUP 4 ; UPDATE ; DIP 1 { DIG 12 ; DROP 1 } ; DUG 12 ; DROP 1 } ; DROP 1 } ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } { DROP 1 ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH bool True ; DIP 1 { DIG 8 ; DROP 1 } ; DUG 8 ; PAIR 13 ; SWAP ; PAIR } } { IF_LEFT { DROP 1 ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH bool False ; DIP 1 { DIG 8 ; DROP 1 } ; DUG 8 ; PAIR 13 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP ; SOME ; DIP 1 { DIG 6 ; DROP 1 } ; DUG 6 ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } } } { IF_LEFT { IF_LEFT { DROP 1 ; DUP 6 ; IF_NONE { PUSH bool False } { SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP 1 } ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; SENDER ; SWAP ; DROP 1 ; NONE address ; DIP 1 { DIG 5 ; DROP 1 } ; DUG 5 ; PAIR 13 ; SWAP ; PAIR } { DROP 1 ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 7 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; PUSH bool True ; DIP 1 { DIG 6 ; DROP 1 } ; DUG 6 ; PAIR 13 ; SWAP ; PAIR } } { IF_LEFT { DROP 1 ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 7 ; NOT ; IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ; PUSH bool False ; DIP 1 { DIG 6 ; DROP 1 } ; DUG 6 ; PAIR 13 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP ; DIP 1 { DIG 8 ; DROP 1 } ; DUG 8 ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } } } } { IF_LEFT { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 2 ; COMPARE ; EQ ; IF { PUSH string "BAD_TOKEN_PRIZE" ; FAILWITH } {} ; DUP ; DIP 1 { DIG 3 ; DROP 1 } ; DUG 3 ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 6 ; DUP 2 ; COMPARE ; LT ; IF { PUSH string "BAD_TOKEN_AMOUNT" ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; COMPARE ; EQ ; IF { PUSH string "BAD_TOKEN_AMOUNT" ; FAILWITH } {} ; DUP ; DIP 1 { DIG 4 ; DROP 1 } ; DUG 4 ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } } { IF_LEFT { UNPAIR ; SWAP ; DUP 3 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 9 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 15 ; DUP 2 ; DUP 4 ; UPDATE ; DIP 1 { DIG 14 ; DROP 1 } ; DUG 14 ; DROP 2 ; PAIR 13 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP ; ITER { DUP 14 ; DUP 2 ; MEM ; IF { PUSH string "white_list" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH } { DUP 14 ; PUSH unit Unit ; SOME ; DUP 3 ; UPDATE ; DIP 1 { DIG 13 ; DROP 1 } ; DUG 13 } ; DROP 1 } ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } } } { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP ; ITER { DUP 14 ; NONE unit ; DUP 3 ; UPDATE ; DIP 1 { DIG 13 ; DROP 1 } ; DUG 13 ; DROP 1 } ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP ; DIP 1 { DIG 2 ; DROP 1 } ; DUG 2 ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } } { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 12 ; DUP 2 ; MEM ; IF { PUSH string "orders_operator" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH } { DUP 12 ; PUSH unit Unit ; SOME ; DUP 3 ; UPDATE ; DIP 1 { DIG 11 ; DROP 1 } ; DUG 11 } ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 12 ; NONE unit ; DUP 3 ; UPDATE ; DIP 1 { DIG 11 ; DROP 1 } ; DUG 11 ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } } } } } { IF_LEFT { IF_LEFT { IF_LEFT { SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 4 ; AMOUNT ; COMPARE ; LT ; IF { PUSH string "INSUFFICIENT_FUNDS" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 9 ; IF { PUSH string "RAFLE_IS_CLOSED" ; FAILWITH } {} ; DUP 11 ; DUP 2 ; GET ; IF_NONE {} { PUSH string "RAFLE_MAX_UNIT_REACH" ; FAILWITH } ; DUP 4 ; AMOUNT ; EDIV ; PUSH nat 0 ; PUSH mutez 0 ; DUP 3 ; IF_NONE {} { DUP ; GET 1 ; DIP 1 { DIG 2 ; DROP 1 } ; DUG 2 ; DUP ; GET 2 ; DIP 1 { SWAP ; DROP 1 } ; SWAP ; DROP 1 } ; PUSH mutez 0 ; DUP 2 ; COMPARE ; GT ; IF { PUSH string "BAD_TZ_AMOUNT" ; FAILWITH } {} ; DUP 8 ; DUP 10 ; DUP 4 ; ADD ; COMPARE ; GT ; IF { PUSH string "SUPPLY_LIMIT" ; FAILWITH } {} ; DUP 19 ; DUP 3 ; EXEC ; NOT ; IF { PUSH string "BAD_TOKEN_AMOUNT" ; FAILWITH } {} ; DUP 13 ; IF { DUP 16 ; DUP 5 ; MEM ; NOT ; IF { PUSH string "WHITE_LIST_ACCESS_RESTRICTION" ; FAILWITH } {} } {} ; DUP 14 ; DUP 5 ; MEM ; IF { PUSH string "holders" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH } { DUP 14 ; PUSH int 0 ; DUP 4 ; PAIR ; SOME ; DUP 6 ; UPDATE ; DIP 1 { DIG 13 ; DROP 1 } ; DUG 13 } ; DUP 2 ; DUP 10 ; ADD ; DIP 1 { DIG 8 ; DROP 1 } ; DUG 8 ; DROP 4 ; PAIR 13 ; SWAP ; PAIR } { DROP 1 ; NIL operation ; NIL operation ; DUP 16 ; ITER { CONS } ; SELF_ADDRESS ; CONTRACT %do_create_order address ; IF_NONE { PUSH string "do_create_order" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH } {} ; AMOUNT ; SENDER ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 13 ; DROP 1 } ; DUG 13 ; PAIR 13 ; SWAP ; PAIR } } { IF_LEFT { DUP 12 ; SENDER ; MEM ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 17 ; ITER { CONS } ; SELF_ADDRESS ; CONTRACT %do_create_order address ; IF_NONE { PUSH string "do_create_order" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH } {} ; AMOUNT ; DUP 5 ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 14 ; DROP 1 } ; DUG 14 ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 8 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 11 ; DUP 2 ; MEM ; IF { DUP 11 ; DUP 2 ; GET ; IF_NONE { PUSH string "OPTION_IS_NONE" ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; GET 1 ; COMPARE ; EQ ; IF { PUSH string "CONFIRM_ORDER_ERROR" ; FAILWITH } {} ; PUSH int 0 ; DUP 2 ; GET 2 ; COMPARE ; NEQ ; IF { PUSH string "CONFIRM_ORDER_ERROR" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 18 ; ITER { CONS } ; DUP 6 ; CONTRACT %mint (pair address nat) ; IF_NONE { PUSH string "mint" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; GET 1 ; DUP 7 ; PAIR ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 15 ; DROP 1 } ; DUG 15 ; DUP 12 ; DUP 13 ; DUP 4 ; GET ; IF_NONE { PUSH string "holders" ; PUSH string "ASSET_NOT_FOUND" ; PAIR ; FAILWITH } {} ; UNPAIR ; SWAP ; DROP 1 ; PUSH int 1 ; SWAP ; PAIR ; SOME ; DUP 4 ; UPDATE ; DIP 1 { DIG 11 ; DROP 1 } ; DUG 11 ; DROP 1 } { PUSH string "CONFIRM_ORDER_ERROR" ; FAILWITH } ; DROP 1 ; PAIR 13 ; SWAP ; PAIR } } } { IF_LEFT { IF_LEFT { UNPAIR ; SWAP ; DUP 3 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 9 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 12 ; DUP 3 ; MEM ; IF { DUP 12 ; DUP 3 ; GET ; IF_NONE { PUSH string "OPTION_IS_NONE" ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; GET 1 ; COMPARE ; EQ ; IF { PUSH string "REPAY_HOLDER_ERROR" ; FAILWITH } {} ; PUSH int 0 ; DUP 2 ; GET 2 ; COMPARE ; NEQ ; IF { PUSH string "REPAY_HOLDER_ERROR" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 19 ; ITER { CONS } ; DUP 5 ; CONTRACT unit ; IF_NONE { PUSH string "ENTRY_NOT_FOUND" ; FAILWITH } {} ; DUP 5 ; UNIT ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 16 ; DROP 1 } ; DUG 16 ; DUP ; GET 1 ; INT ; DUP 9 ; INT ; SUB ; ISNAT ; IF_NONE { PUSH string "OPTION_IS_NONE" ; FAILWITH } {} ; DUP ; DIP 1 { DIG 8 ; DROP 1 } ; DUG 8 ; DUP 14 ; DUP 15 ; DUP 6 ; GET ; IF_NONE { PUSH string "holders" ; PUSH string "ASSET_NOT_FOUND" ; PAIR ; FAILWITH } {} ; UNPAIR ; SWAP ; DROP 1 ; PUSH int 2 ; SWAP ; PAIR ; SOME ; DUP 6 ; UPDATE ; DIP 1 { DIG 13 ; DROP 1 } ; DUG 13 ; DROP 2 } { PUSH string "REPAY_HOLDER_ERROR" ; FAILWITH } ; DROP 2 ; PAIR 13 ; SWAP ; PAIR } { UNPAIR ; SWAP ; DUP 3 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 9 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 6 ; DUP 8 ; DUP 3 ; ADD ; COMPARE ; GT ; IF { PUSH string "SUPPLY_LIMIT" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 18 ; ITER { CONS } ; DUP 6 ; CONTRACT %mint (pair address nat) ; IF_NONE { PUSH string "mint" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; DUP 7 ; PAIR ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 15 ; DROP 1 } ; DUG 15 ; DUP ; DUP 8 ; ADD ; DIP 1 { DIG 6 ; DROP 1 } ; DUG 6 ; DROP 2 ; PAIR 13 ; SWAP ; PAIR } } { UNPAIR ; SWAP ; DUP 3 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 18 ; ITER { CONS } ; DUP 4 ; CONTRACT unit ; IF_NONE { PUSH string "ENTRY_NOT_FOUND" ; FAILWITH } {} ; DUP 4 ; UNIT ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP 1 { DIG 15 ; DROP 1 } ; DUG 15 ; DROP 2 ; PAIR 13 ; SWAP ; PAIR } } } ; DIP 1 { DROP 1 } } ; view "is_white_list" address bool { UNPAIR ; DIP 1 { CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP 1 } ; UNIT ; DUP 3 ; DUP 3 ; MEM ; SWAP ; DROP 1 ; DIP 1 { DROP 2 } } ; view "holder_count" address nat { UNPAIR ; DIP 1 { CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP 1 } ; UNIT ; PUSH nat 0 ; DUP 4 ; DUP 4 ; GET ; IF_NONE {} { DUP ; GET 1 ; DIP 1 { SWAP ; DROP 1 } ; SWAP ; DROP 1 } ; DUP ; DIP 1 { SWAP ; DROP 1 } ; SWAP ; DROP 1 ; DIP 1 { DROP 2 } } ; view "is_token_amount_valid" nat bool { CAR ; UNIT ; PUSH nat 1 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH nat 2 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ; IF { PUSH bool True } { PUSH nat 4 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ; IF { PUSH bool True } { PUSH nat 10 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ; IF { PUSH bool True ; SWAP ; DROP 1 } { PUSH bool False ; SWAP ; DROP 1 } ; DIP 1 { DROP 1 } } }