x
807
1492
parameter (or
(or
(or
(or
(or
(pair %balance_of
(list %requests (pair (address %owner) (nat %token_id)))
(contract %callback (list (pair
(pair %request (address %owner)
(nat %token_id))
(nat %balance)))))
(address %declare_ownership))
(or (unit %claim_ownership) (unit %pause)))
(or
(or (unit %unpause)
(list %update_operators (or
(pair %add_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))
(pair %remove_operator (address %owner)
(pair
(address %operator)
(nat %token_id))))))
(or (list %update_operators_for_all (or address address))
(nat %set_default_expiry))))
(or
(or
(or (pair %set_expiry (option %v nat) (option %p bytes))
(pair %permit (key %pk) (pair (signature %sig) (bytes %data))))
(or
(list %transfer_gasless (pair
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair
(nat %token_id)
(nat %amount))))))
(pair key signature)))
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount))))))))
(or
(or (unit %collect)
(pair %collect_token (address %token_contract) (nat %token_amount)))
(or
(pair %collect_FA2token (nat %amount)
(pair (address %contr) (nat %token_number)))
(pair %mint (nat %itokenid) (pair (address %iowner) (nat %iamount)))))))
(or
(or (pair %burn (nat %itokenid) (nat %iamount))
(pair %set_metadata (string %ikey) (bytes %idata)))
(pair %set_token_metadata (nat %itokenid)
(map %itokenMetadata string bytes))));
storage (pair (address %owner)
(pair (option %owner_candidate address)
(pair (bool %paused)
(pair (big_map %ledger (pair nat address) nat)
(pair
(big_map %operator (pair address (pair nat address))
unit)
(pair
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info
string
bytes)))
(pair
(big_map %permits address
(pair (nat %counter)
(pair
(option %user_expiry nat)
(map %user_permits bytes
(pair
(option %expiry nat)
(timestamp %created_at))))))
(pair
(big_map %operator_for_all
(pair address address)
unit)
(pair (nat %default_expiry)
(big_map %metadata string bytes))))))))));
code { LAMBDA
(pair string bool)
bool
{ UNPAIR 2 ;
PUSH unit Unit ;
DUP 3 ;
NOT ;
IF
{ PUSH bool True ; SWAP ; DROP }
{ PUSH string "CONTRACT_PAUSED" ; FAILWITH } ;
DUG 2 ;
DROP 2 } ;
LAMBDA
(pair (big_map (pair nat address) nat)
(pair (big_map (pair address address) unit)
(pair (big_map (pair address (pair nat address)) unit)
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount)))))))))
bool
{ UNPAIR 4 ;
PUSH unit Unit ;
PUSH bool True ;
DUP 6 ;
ITER { DUP ;
CAR ;
DUP 2 ;
CDR ;
DUP ;
ITER { DUP 3 ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DUP 8 ;
DUP 4 ;
SENDER ;
PAIR ;
MEM ;
DUP 10 ;
DUP 5 ;
DUP 4 ;
CDR ;
CAR ;
PAIR ;
SENDER ;
PAIR ;
MEM ;
OR }
{ DUP 7 ; SENDER ; DUP 3 ; CDR ; CAR ; PAIR ; MEM } ;
DUP 6 ;
AND ;
DIP { DIG 4 ; DROP } ;
DUG 4 ;
DROP } ;
DROP 3 } ;
DUP ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
DROP ;
DUG 4 ;
DROP 4 } ;
LAMBDA
(pair
(big_map address
(pair (nat %counter)
(pair (option %user_expiry nat)
(map %user_permits bytes
(pair (option %expiry nat)
(timestamp %created_at))))))
(pair nat address))
nat
{ UNPAIR 3 ;
PUSH unit Unit ;
DUP 3 ;
DUP 3 ;
DUP 6 ;
MEM ;
IF
{ DUP 3 ;
DUP 6 ;
GET ;
IF_NONE
{ PUSH string "permits" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH }
{} ;
CDR ;
CAR ;
IF_NONE
{ DUP 4 ; SWAP ; DROP }
{ DUP ; DIP { DIG 1 ; DROP } ; DUG 1 ; DROP } }
{} ;
DUP ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
DROP ;
DUG 3 ;
DROP 3 } ;
LAMBDA
(pair
(big_map address
(pair (nat %counter)
(pair (option %user_expiry nat)
(map %user_permits bytes
(pair (option %expiry nat)
(timestamp %created_at))))))
(pair nat
(pair address
(pair bytes
(lambda
(pair
(big_map address
(pair (nat %counter)
(pair (option %user_expiry nat)
(map %user_permits bytes
(pair
(option %expiry nat)
(timestamp %created_at))))))
(pair nat address))
nat)))))
nat
{ UNPAIR 5 ;
PUSH unit Unit ;
DUP 6 ;
DUP 5 ;
DUP 5 ;
PAIR ;
DUP 4 ;
PAIR ;
EXEC ;
DUP 3 ;
DUP 6 ;
MEM ;
IF
{ DUP 3 ;
DUP 6 ;
GET ;
IF_NONE
{ PUSH string "permits" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH }
{} ;
CDR ;
CDR ;
DUP 7 ;
MEM ;
IF
{ DUP 3 ;
DUP 6 ;
GET ;
IF_NONE
{ PUSH string "permits" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH }
{} ;
CDR ;
CDR ;
DUP 7 ;
GET ;
IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
CAR ;
IF_NONE {} { DUP ; DIP { DIG 1 ; DROP } ; DUG 1 ; DROP } }
{} }
{} ;
DUP ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
DROP ;
DUG 5 ;
DROP 5 } ;
LAMBDA
(pair (pair (option %expiry nat) (timestamp %created_at)) nat)
bool
{ UNPAIR 2 ;
PUSH unit Unit ;
DUP 2 ;
CAR ;
IF_NONE
{ NOW ;
PUSH int 1 ;
PUSH nat 1 ;
DUP 6 ;
INT ;
PAIR ;
PAIR ;
UNPAIR ;
UNPAIR ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH string "DivByZero" ; FAILWITH } {} ;
CAR ;
DUP 4 ;
CDR ;
ADD ;
COMPARE ;
LT ;
SWAP ;
DROP }
{ NOW ;
PUSH int 1 ;
PUSH nat 1 ;
DUP 4 ;
INT ;
PAIR ;
PAIR ;
UNPAIR ;
UNPAIR ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH string "DivByZero" ; FAILWITH } {} ;
CAR ;
DUP 5 ;
CDR ;
ADD ;
COMPARE ;
LT ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
DROP } ;
DUG 2 ;
DROP 2 } ;
LAMBDA
(pair string
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount)))))))
(option address)
{ UNPAIR 2 ;
PUSH unit Unit ;
DUP 3 ;
IF_CONS
{ DUP ;
CAR ;
DUP 3 ;
ITER { DUP ;
CAR ;
DUP 3 ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } {} ;
DROP } ;
DUP ;
SOME ;
DIP { DIG 3 ; DROP } ;
DUG 3 ;
DROP 3 }
{ NONE address ; SWAP ; DROP } ;
DUG 2 ;
DROP 2 } ;
NIL operation ;
DIG 7 ;
UNPAIR ;
DIP { UNPAIR 10 } ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ UNPAIR ;
DUP 13 ;
DUP 3 ;
AMOUNT ;
DUP 4 ;
MAP { DUP 10 ;
DUP 2 ;
CAR ;
DUP 3 ;
CDR ;
PAIR ;
MEM ;
IF
{ DUP 10 ;
DUP 2 ;
CAR ;
DUP 3 ;
CDR ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} }
{ PUSH nat 0 } ;
DUP 2 ;
PAIR ;
SWAP ;
DROP } ;
TRANSFER_TOKENS ;
CONS ;
DIP { DIG 12 ; DROP } ;
DUG 12 ;
DROP 2 ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP ;
SOME ;
DIP { DIG 2 ; DROP } ;
DUG 2 ;
DROP ;
PAIR 10 ;
DIG 1 ;
PAIR } }
{ IF_LEFT
{ DROP ;
DUP 2 ;
IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
SENDER ;
SWAP ;
DROP ;
NONE address ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ DROP ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 3 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
PUSH bool True ;
DIP { DIG 2 ; DROP } ;
DUG 2 ;
PAIR 10 ;
DIG 1 ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ DROP ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 3 ;
NOT ;
IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
PUSH bool False ;
DIP { DIG 2 ; DROP } ;
DUG 2 ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ DUP 18 ;
DUP 5 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r0" ;
PUSH string "InvalidCondition" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
ITER { DUP ;
IF_LEFT
{ SENDER ;
DUP 2 ;
CAR ;
COMPARE ;
EQ ;
NOT ;
IF
{ PUSH string "CALLER_NOT_OWNER" ; FAILWITH }
{} ;
DUP 8 ;
DUP 2 ;
CAR ;
DUP 3 ;
CDR ;
CDR ;
PAIR ;
DUP 3 ;
CDR ;
CAR ;
PAIR ;
MEM ;
IF
{ PUSH string "operator" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 8 ;
PUSH unit Unit ;
SOME ;
DUP 3 ;
CAR ;
DUP 4 ;
CDR ;
CDR ;
PAIR ;
DUP 4 ;
CDR ;
CAR ;
PAIR ;
UPDATE ;
DIP { DIG 7 ; DROP } ;
DUG 7 } ;
DROP }
{ SENDER ;
DUP 2 ;
CAR ;
COMPARE ;
EQ ;
NOT ;
IF
{ PUSH string "CALLER_NOT_OWNER" ; FAILWITH }
{} ;
DUP 8 ;
NONE unit ;
DUP 3 ;
CAR ;
DUP 4 ;
CDR ;
CDR ;
PAIR ;
DUP 4 ;
CDR ;
CAR ;
PAIR ;
UPDATE ;
DIP { DIG 7 ; DROP } ;
DUG 7 ;
DROP } ;
DROP } ;
DROP ;
PAIR 10 ;
DIG 1 ;
PAIR } }
{ IF_LEFT
{ DUP 18 ;
DUP 5 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r1" ;
PUSH string "InvalidCondition" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
ITER { DUP ;
IF_LEFT
{ DUP 11 ;
SENDER ;
DUP 3 ;
PAIR ;
MEM ;
IF
{ PUSH string "operator_for_all" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 11 ;
PUSH unit Unit ;
SOME ;
SENDER ;
DUP 4 ;
PAIR ;
UPDATE ;
DIP { DIG 10 ; DROP } ;
DUG 10 } ;
DROP }
{ DUP 11 ;
NONE unit ;
SENDER ;
DUP 4 ;
PAIR ;
UPDATE ;
DIP { DIG 10 ; DROP } ;
DUG 10 ;
DROP } ;
DROP } ;
DROP ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 18 ;
DUP 5 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r6" ;
PUSH string "InvalidCondition" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
DIP { DIG 9 ; DROP } ;
DUG 9 ;
DROP ;
PAIR 10 ;
DIG 1 ;
PAIR } } } }
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ UNPAIR ;
SWAP ;
DUP 19 ;
DUP 6 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r7" ;
PUSH string "InvalidCondition" ;
PAIR ;
FAILWITH }
{} ;
DUP 2 ;
IF_NONE
{}
{ DUP 12 ;
DUP 2 ;
COMPARE ;
GE ;
IF { PUSH string "EXPIRY_TOO_BIG" ; FAILWITH } {} ;
DROP } ;
DUP 9 ;
SENDER ;
MEM ;
IF
{ DUP ;
IF_NONE
{ DUP 9 ;
DUP 10 ;
SENDER ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
SWAP ;
UNPAIR ;
DROP ;
DUP 5 ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
SENDER ;
UPDATE ;
DIP { DIG 8 ; DROP } ;
DUG 8 }
{ DUP 10 ;
SENDER ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
DUP 2 ;
MEM ;
IF
{ PUSH bool True ;
DUP 4 ;
IF_NONE
{}
{ PUSH nat 0 ;
DUP 2 ;
COMPARE ;
EQ ;
IF
{ PUSH bool False ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
DUP 12 ;
DUP 13 ;
SENDER ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DROP ;
DUP 15 ;
SENDER ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
NONE (pair (option nat) timestamp) ;
DUP 8 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
SENDER ;
UPDATE ;
DIP { DIG 11 ; DROP } ;
DUG 11 }
{} ;
DROP } ;
DUP ;
IF
{ DUP 11 ;
SENDER ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
DUP 3 ;
GET ;
IF_NONE
{ PUSH string "NotFound" ; FAILWITH }
{} ;
DUP 12 ;
DUP 13 ;
SENDER ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DROP ;
DUP 15 ;
SENDER ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
DUP 5 ;
UNPAIR ;
DROP ;
DUP 10 ;
PAIR ;
SOME ;
DUP 8 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
SENDER ;
UPDATE ;
DIP { DIG 11 ; DROP } ;
DUG 11 ;
DROP }
{} ;
DROP }
{ DUP ;
SENDER ;
PAIR ;
PUSH string "PERMIT_NOT_FOUND" ;
PAIR ;
FAILWITH } ;
DROP } }
{ SENDER ; PUSH string "PERMIT_USER_NOT_FOUND" ; PAIR ; FAILWITH } ;
DROP 2 ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DUP 20 ;
DUP 7 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r5" ;
PUSH string "InvalidCondition" ;
PAIR ;
FAILWITH }
{} ;
DUP 3 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
EMPTY_MAP bytes
(pair (option %expiry nat) (timestamp %created_at)) ;
DUP 12 ;
DUP 3 ;
MEM ;
IF
{ DUP 12 ;
DUP 3 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
DUP 13 ;
DUP 4 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CAR ;
PAIR }
{ DUP ; PUSH nat 0 ; PAIR } ;
DUP ;
CAR ;
DUP 2 ;
CDR ;
DUP 6 ;
DUP 3 ;
PAIR ;
CHAIN_ID ;
SELF_ADDRESS ;
PAIR ;
PAIR ;
PACK ;
DUP ;
DUP 9 ;
DUP 11 ;
CHECK_SIGNATURE ;
NOT ;
IF { DUP ; PUSH string "MISSIGNED" ; PAIR ; FAILWITH } {} ;
DUP 24 ;
DUP 7 ;
DUP 20 ;
PAIR ;
DUP 18 ;
PAIR ;
EXEC ;
DUP 17 ;
DUP 8 ;
MEM ;
IF
{ DUP 17 ;
DUP 8 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 18 ;
DUP 19 ;
DUP 10 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
DROP ;
PUSH nat 1 ;
DUP 4 ;
CAR ;
ADD ;
SWAP ;
UNPAIR ;
SWAP ;
DROP ;
DUP 7 ;
NOW ;
DUP 7 ;
SOME ;
PAIR ;
SOME ;
DUP 14 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
DUP 10 ;
UPDATE ;
DIP { DIG 17 ; DROP } ;
DUG 17 ;
DROP }
{ DUP 17 ;
DUP 8 ;
MEM ;
IF
{ PUSH string "permits" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 17 ;
DUP 4 ;
NOW ;
DUP 4 ;
SOME ;
PAIR ;
SOME ;
DUP 11 ;
UPDATE ;
NONE nat ;
PAIR ;
PUSH nat 1 ;
PUSH nat 0 ;
ADD ;
PAIR ;
SOME ;
DUP 9 ;
UPDATE ;
DIP { DIG 16 ; DROP } ;
DUG 16 } } ;
DUP 17 ;
DUP 8 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
ITER { UNPAIR ;
DUP 25 ;
DUP 4 ;
DUP 4 ;
PAIR ;
EXEC ;
IF
{ DUP 19 ;
DUP 20 ;
DUP 11 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DROP ;
DUP 22 ;
DUP 13 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
NONE (pair (option nat) timestamp) ;
DUP 6 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
DUP 11 ;
UPDATE ;
DIP { DIG 18 ; DROP } ;
DUG 18 }
{} ;
DROP 2 } ;
DROP 10 ;
PAIR 10 ;
DIG 1 ;
PAIR } }
{ IF_LEFT
{ DUP ;
ITER { DUP ;
CDR ;
CAR ;
DUP 2 ;
CDR ;
CDR ;
DUP 2 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
DUP 12 ;
DUP 2 ;
MEM ;
IF
{ DUP 12 ;
DUP 2 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CAR }
{ PUSH nat 0 } ;
DUP 5 ;
CAR ;
PACK ;
BLAKE2B ;
DUP 2 ;
PAIR ;
SELF_ADDRESS ;
PAIR ;
PACK ;
DUP ;
DUP 5 ;
DUP 7 ;
CHECK_SIGNATURE ;
NOT ;
IF
{ DUP ; PUSH string "MISSIGNED" ; PAIR ; FAILWITH }
{} ;
DUP 14 ;
DUP 4 ;
MEM ;
IF
{ DUP 14 ;
DUP 15 ;
DUP 5 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
DROP ;
PUSH nat 1 ;
DUP 5 ;
ADD ;
PAIR ;
SOME ;
DUP 5 ;
UPDATE ;
DIP { DIG 13 ; DROP } ;
DUG 13 }
{ DUP 14 ;
DUP 4 ;
MEM ;
IF
{ PUSH string "permits" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 14 ;
EMPTY_MAP bytes
(pair (option %expiry nat)
(timestamp %created_at)) ;
NONE nat ;
PAIR ;
PUSH nat 1 ;
DUP 5 ;
ADD ;
PAIR ;
SOME ;
DUP 5 ;
UPDATE ;
DIP { DIG 13 ; DROP } ;
DUG 13 } } ;
DUP 6 ;
CAR ;
ITER { DUP ;
CAR ;
DUP 2 ;
CDR ;
DUP 2 ;
DUP 7 ;
COMPARE ;
EQ ;
NOT ;
IF
{ DUP 2 ;
DUP 7 ;
PAIR ;
PUSH string "SIGNER_NOT_FROM" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
ITER { DUP ;
CAR ;
DUP 2 ;
CDR ;
CAR ;
DUP 17 ;
DUP 6 ;
DUP 3 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
DUP 5 ;
CDR ;
CDR ;
COMPARE ;
GT ;
IF
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH }
{ DUP ;
DUP 5 ;
CDR ;
CDR ;
COMPARE ;
EQ ;
IF
{ DUP 18 ;
NONE nat ;
DUP 8 ;
DUP 5 ;
PAIR ;
UPDATE ;
DIP { DIG 17 ; DROP } ;
DUG 17 }
{ DUP 18 ;
DUP 7 ;
DUP 4 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 19 ;
PUSH int 0 ;
DUP 7 ;
CDR ;
CDR ;
INT ;
DUP 4 ;
SUB ;
COMPARE ;
GE ;
IF
{ DUP 6 ; CDR ; CDR ; INT ; DUP 3 ; SUB ; ABS }
{ PUSH string "NatAssign" ;
FAILWITH } ;
SOME ;
DUP 9 ;
DUP 6 ;
PAIR ;
UPDATE ;
DIP { DIG 18 ; DROP } ;
DUG 18 ;
DROP } } ;
DUP 18 ;
DUP 5 ;
CAR ;
DUP 4 ;
PAIR ;
MEM ;
IF
{ DUP 18 ;
DUP 5 ;
CAR ;
DUP 4 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 19 ;
DUP 6 ;
CDR ;
CDR ;
DUP 3 ;
ADD ;
SOME ;
DUP 7 ;
CAR ;
DUP 6 ;
PAIR ;
UPDATE ;
DIP { DIG 18 ; DROP } ;
DUG 18 ;
DROP }
{ DUP 18 ;
DUP 5 ;
CAR ;
DUP 4 ;
PAIR ;
MEM ;
IF
{ PUSH string "ledger" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 18 ;
DUP 5 ;
CDR ;
CDR ;
PUSH nat 0 ;
ADD ;
SOME ;
DUP 6 ;
CAR ;
DUP 5 ;
PAIR ;
UPDATE ;
DIP { DIG 17 ; DROP } ;
DUG 17 } } ;
DROP 4 } ;
DROP 3 } ;
DROP 6 } ;
DROP ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ DUP 18 ;
DUP 5 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r8" ;
PUSH string "InvalidCondition" ;
PAIR ;
FAILWITH }
{} ;
DUP 17 ;
DUP 2 ;
DUP 8 ;
PAIR ;
DUP 11 ;
PAIR ;
DUP 7 ;
PAIR ;
EXEC ;
NOT ;
IF
{ DUP 13 ;
DUP 2 ;
PUSH string "FA2_NOT_OPERATOR" ;
PAIR ;
EXEC ;
IF_NONE
{}
{ DUP 2 ;
PACK ;
BLAKE2B ;
DUP 10 ;
DUP 3 ;
MEM ;
NOT ;
IF
{ PUSH string "NO_ENTRY_FOR_USER" ; FAILWITH }
{ DUP 10 ;
DUP 3 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
DUP 2 ;
MEM ;
NOT ;
IF
{ PUSH string "FA2_NOT_OPERATOR" ; FAILWITH }
{ DUP 10 ;
DUP 3 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
DUP 2 ;
GET ;
IF_NONE
{ PUSH string "NotFound" ; FAILWITH }
{} ;
DUP 18 ;
DUP 20 ;
DUP 4 ;
PAIR ;
DUP 5 ;
PAIR ;
DUP 15 ;
PAIR ;
DUP 13 ;
PAIR ;
EXEC ;
DUP 18 ;
DUP 2 ;
DUP 4 ;
PAIR ;
EXEC ;
IF
{ PUSH string "PERMIT_EXPIRED" ; FAILWITH }
{ DUP 12 ;
DUP 13 ;
DUP 6 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DROP ;
DUP 15 ;
DUP 8 ;
GET ;
IF_NONE
{ PUSH string "permits" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR ;
NONE (pair (option nat) timestamp) ;
DUP 8 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
DUP 6 ;
UPDATE ;
DIP { DIG 11 ; DROP } ;
DUG 11 } ;
DROP 2 } } ;
DROP 2 } }
{} ;
DUP ;
ITER { DUP ;
CAR ;
DUP 2 ;
CDR ;
DUP ;
ITER { DUP ;
CDR ;
CAR ;
DUP 10 ;
DUP 5 ;
DUP 3 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
PUSH nat 0 ;
DUP 2 ;
DUP 5 ;
CDR ;
CDR ;
COMPARE ;
GT ;
IF
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH }
{ DUP 2 ;
DUP 5 ;
CDR ;
CDR ;
COMPARE ;
EQ ;
IF
{ DUP 12 ;
NONE nat ;
DUP 8 ;
DUP 6 ;
PAIR ;
UPDATE ;
DIP { DIG 11 ; DROP } ;
DUG 11 }
{ DUP 12 ;
DUP 7 ;
DUP 5 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 13 ;
PUSH int 0 ;
DUP 7 ;
CDR ;
CDR ;
INT ;
DUP 4 ;
SUB ;
COMPARE ;
GE ;
IF
{ DUP 6 ; CDR ; CDR ; INT ; DUP 3 ; SUB ; ABS }
{ PUSH string "NatAssign" ; FAILWITH } ;
SOME ;
DUP 9 ;
DUP 7 ;
PAIR ;
UPDATE ;
DIP { DIG 12 ; DROP } ;
DUG 12 ;
DROP ;
DUP 12 ;
DUP 7 ;
DUP 5 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
SWAP ;
DROP } } ;
DUP 12 ;
DUP 5 ;
CAR ;
DUP 5 ;
PAIR ;
MEM ;
IF
{ DUP 12 ;
DUP 5 ;
CAR ;
DUP 5 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 13 ;
DUP 6 ;
CDR ;
CDR ;
DUP 3 ;
ADD ;
SOME ;
DUP 7 ;
CAR ;
DUP 7 ;
PAIR ;
UPDATE ;
DIP { DIG 12 ; DROP } ;
DUG 12 ;
DROP }
{ DUP 12 ;
DUP 5 ;
CAR ;
DUP 5 ;
PAIR ;
MEM ;
IF
{ PUSH string "ledger" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 12 ;
DUP 5 ;
CDR ;
CDR ;
PUSH nat 0 ;
ADD ;
SOME ;
DUP 6 ;
CAR ;
DUP 6 ;
PAIR ;
UPDATE ;
DIP { DIG 11 ; DROP } ;
DUG 11 } } ;
DUP 12 ;
DUP 5 ;
CAR ;
DUP 5 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DROP 5 } ;
DROP 3 } ;
DROP ;
PAIR 10 ;
DIG 1 ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ DROP ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 11 ;
DUP 2 ;
CONTRACT unit ;
IF_NONE { PUSH string "EntryNotFound" ; FAILWITH } {} ;
BALANCE ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
DIP { DIG 10 ; DROP } ;
DUG 10 ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 13 ;
DUP 3 ;
CONTRACT %transfer (pair address (pair address nat)) ;
IF_NONE
{ PUSH string "transfer" ;
PUSH string "EntryNotFound" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 4 ;
DUP 7 ;
PAIR ;
SELF_ADDRESS ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
DIP { DIG 12 ; DROP } ;
DUG 12 ;
DROP 2 ;
PAIR 10 ;
DIG 1 ;
PAIR } }
{ IF_LEFT
{ UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DUP 4 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 14 ;
DUP 3 ;
CONTRACT %transfer (list (pair address
(list (pair address
(pair nat nat))))) ;
IF_NONE
{ PUSH string "transfer" ;
PUSH string "EntryNotFound" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
NIL (pair address (list (pair address (pair nat nat)))) ;
NIL (pair address (pair nat nat)) ;
DUP 8 ;
DUP 7 ;
PAIR ;
DUP 10 ;
PAIR ;
CONS ;
SELF_ADDRESS ;
PAIR ;
CONS ;
TRANSFER_TOKENS ;
CONS ;
DIP { DIG 13 ; DROP } ;
DUG 13 ;
DROP 3 ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DUP 4 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 20 ;
DUP 7 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r11" ;
PUSH string "InvalidCondition" ;
PAIR ;
FAILWITH }
{} ;
DUP 7 ;
DUP 3 ;
DUP 5 ;
PAIR ;
MEM ;
IF
{ DUP 7 ;
DUP 3 ;
DUP 5 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 8 ;
DUP 3 ;
DUP 3 ;
ADD ;
SOME ;
DUP 5 ;
DUP 7 ;
PAIR ;
UPDATE ;
DIP { DIG 7 ; DROP } ;
DUG 7 ;
DROP }
{ DUP 7 ;
DUP 3 ;
DUP 5 ;
PAIR ;
MEM ;
IF
{ PUSH string "ledger" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 7 ;
DUP 2 ;
PUSH nat 0 ;
ADD ;
SOME ;
DUP 4 ;
DUP 6 ;
PAIR ;
UPDATE ;
DIP { DIG 6 ; DROP } ;
DUG 6 } } ;
DROP 3 ;
PAIR 10 ;
DIG 1 ;
PAIR } } } } }
{ IF_LEFT
{ IF_LEFT
{ UNPAIR ;
SWAP ;
DUP 19 ;
DUP 6 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r2" ; PUSH string "InvalidCondition" ; PAIR ; FAILWITH }
{} ;
DUP 6 ;
SENDER ;
DUP 4 ;
PAIR ;
MEM ;
IF
{ DUP 6 ;
SENDER ;
DUP 4 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 2 ;
DUP 2 ;
COMPARE ;
GT ;
IF
{ DUP 7 ;
SENDER ;
DUP 5 ;
PAIR ;
GET ;
IF_NONE
{ PUSH string "ledger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
DUP 8 ;
PUSH int 0 ;
DUP 5 ;
INT ;
DUP 4 ;
SUB ;
COMPARE ;
GE ;
IF
{ DUP 4 ; INT ; DUP 3 ; SUB ; ABS }
{ PUSH string "NatAssign" ; FAILWITH } ;
SOME ;
SENDER ;
DUP 7 ;
PAIR ;
UPDATE ;
DIP { DIG 7 ; DROP } ;
DUG 7 ;
DROP }
{ DUP 2 ;
DUP 2 ;
COMPARE ;
EQ ;
IF
{ DUP 7 ;
NONE nat ;
SENDER ;
DUP 6 ;
PAIR ;
UPDATE ;
DIP { DIG 6 ; DROP } ;
DUG 6 }
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } } ;
DROP }
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } ;
DROP 2 ;
PAIR 10 ;
DIG 1 ;
PAIR }
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 19 ;
DUP 6 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r3" ; PUSH string "InvalidCondition" ; PAIR ; FAILWITH }
{} ;
DIG 11 ;
DUP 2 ;
SOME ;
DUP 4 ;
UPDATE ;
DUG 11 ;
DROP 2 ;
PAIR 10 ;
DIG 1 ;
PAIR } }
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 19 ;
DUP 6 ;
PUSH string "CONTRACT_PAUSED" ;
PAIR ;
EXEC ;
NOT ;
IF
{ PUSH string "r12" ; PUSH string "InvalidCondition" ; PAIR ; FAILWITH }
{} ;
DUP 8 ;
DUP 3 ;
MEM ;
IF
{ DUP 8 ;
DUP 9 ;
DUP 4 ;
GET ;
IF_NONE
{ PUSH string "token_metadata" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
DROP ;
DUP 4 ;
SWAP ;
DROP ;
DUP 3 ;
SWAP ;
PAIR ;
SOME ;
DUP 4 ;
UPDATE ;
DIP { DIG 7 ; DROP } ;
DUG 7 }
{ DUP 8 ;
DUP 3 ;
MEM ;
IF
{ PUSH string "token_metadata" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 8 ; DUP 2 ; DUP 4 ; PAIR ; SOME ; DUP 4 ; UPDATE ; DIP { DIG 7 ; DROP } ; DUG 7 } } ;
DROP 2 ;
PAIR 10 ;
DIG 1 ;
PAIR } } ;
DIP { DROP 6 } }