x
924
1785
{ parameter (or (list %configure (or (address %update_administrator) (or (nat %update_current_snapshot) (or (nat %update_history_length) (or (nat %update_minimum_endorsements) (or (nat %update_snapshot_interval) (set %update_validators (or (address %add) (address %remove))))))))) (pair %submit_block_state_root (nat %block_number) (bytes %state_root))) ; storage (pair (pair (pair %config (pair (address %administrator) (nat %history_length)) (pair (nat %minimum_endorsements) (pair (nat %snapshot_interval) (set %validators address)))) (nat %current_snapshot)) (pair (set %history nat) (big_map %state_root nat (map address bytes)))) ; code { UNPAIR ; IF_LEFT { SENDER ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ADMINISTRATOR" ; FAILWITH } ; DUP ; ITER { DUP ; IF_LEFT { SWAP ; DROP ; DIG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; CDR ; DIG 4 ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP } { IF_LEFT { SWAP ; DROP ; DIG 2 ; UNPAIR ; CAR ; DIG 2 ; SWAP ; PAIR ; PAIR ; SWAP } { IF_LEFT { SWAP ; DROP ; DIG 2 ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; DIG 4 ; SWAP ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP } { IF_LEFT { SWAP ; DROP ; DIG 2 ; UNPAIR ; UNPAIR ; DIG 3 ; UPDATE 3 ; PAIR ; PAIR ; SWAP } { IF_LEFT { SWAP ; DROP ; DIG 2 ; UNPAIR ; UNPAIR ; DIG 3 ; UPDATE 5 ; PAIR ; PAIR ; SWAP } { DUP ; ITER { IF_LEFT { DIG 4 ; UNPAIR ; UNPAIR ; DUP ; GET 6 ; PUSH bool True ; DIG 5 ; UPDATE ; UPDATE 6 ; PAIR ; PAIR ; DUG 3 } { DIG 4 ; UNPAIR ; UNPAIR ; DUP ; GET 6 ; PUSH bool False ; DIG 5 ; UPDATE ; UPDATE 6 ; PAIR ; PAIR ; DUG 3 } } ; DROP 2 } } } } } } ; DROP } { DUP ; UNPAIR ; DUP 4 ; CAR ; CAR ; GET 6 ; SENDER ; MEM ; IF {} { PUSH string "NOT_VALIDATOR" ; FAILWITH } ; PUSH nat 0 ; DUP 5 ; CAR ; CDR ; COMPARE ; EQ ; IF { DIG 3 ; UNPAIR ; CAR ; DUP 3 ; SWAP ; PAIR ; PAIR ; DUG 3 } { DUP ; DUP 5 ; CAR ; CDR ; COMPARE ; EQ ; IF {} { PUSH string "INVALID_SNAPSHOT" ; FAILWITH } } ; DUP 4 ; GET 4 ; SWAP ; DUP ; DUG 2 ; MEM ; IF { DIG 3 ; DUP ; GET 4 ; DUP ; DUP 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 444 ; FAILWITH } {} ; DUP 6 ; SOME ; SENDER ; UPDATE ; SOME ; SWAP ; UPDATE ; UPDATE 4 ; DUG 3 } { DIG 3 ; DUP ; GET 4 ; EMPTY_MAP address bytes ; DUP 5 ; SOME ; SENDER ; UPDATE ; SOME ; DUP 4 ; UPDATE ; UPDATE 4 ; DUG 3 } ; DUP 4 ; GET 4 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH string "UNPROCESSED_BLOCK_STATE" ; FAILWITH } {} ; LAMBDA (pair nat (map address bytes)) (option bytes) { DUP ; UNPAIR ; EMPTY_MAP bytes nat ; DUP 3 ; ITER { SWAP ; DUP ; DUG 2 ; PUSH nat 1 ; DIG 3 ; DUP 4 ; CDR ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; SOME ; DIG 2 ; CDR ; UPDATE } ; DUP ; PUSH bytes 0x ; SWAP ; ITER { CAR ; DUP 3 ; DUP 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 4 ; DUP 3 ; GET ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; PUSH nat 0 ; DUP 3 ; SIZE ; COMPARE ; EQ ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; PUSH bool True } { DIG 3 ; DROP ; DIG 3 ; DROP ; DUP ; DUG 3 ; GET ; IF_NONE { PUSH int 113 ; FAILWITH } {} ; COMPARE ; LT } ; IF { DROP ; NONE bytes } { SOME } } ; SWAP ; DUP 6 ; CAR ; CAR ; GET 3 ; PAIR ; EXEC ; IF_NONE { DROP 3 } { DROP ; DUP 4 ; UNPAIR ; UNPAIR ; SWAP ; DIG 6 ; CAR ; CAR ; GET 5 ; ADD ; SWAP ; PAIR ; PAIR ; DUP ; GET 3 ; PUSH bool True ; DUP 4 ; UPDATE ; UPDATE 3 ; DUP ; CAR ; CAR ; CAR ; CDR ; SWAP ; DUP ; DUG 5 ; GET 3 ; SIZE ; COMPARE ; GT ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DUP ; DUG 2 ; GET 3 ; ITER { SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; COMPARE ; LT ; IF { SWAP ; DROP } { DROP } } ; SWAP ; DUP ; GET 4 ; NONE (map address bytes) ; DUP 4 ; UPDATE ; UPDATE 4 ; DUP ; GET 3 ; PUSH bool False ; DIG 3 ; UPDATE ; UPDATE 3 } { DROP 3 } } } ; NIL operation ; PAIR } ; view "validate_storage_proof" (pair (bytes %account) (pair (bytes %account_proof_rlp) (pair (nat %block_number) (pair (bytes %storage_proof_rlp) (bytes %storage_slot))))) bytes { UNPAIR ; DUP ; UNPAIR 5 ; LAMBDA (pair bytes (pair bytes (pair (pair (lambda bytes bool) (pair (lambda bytes bytes) (lambda bytes (map nat bytes)))) bytes))) bytes { DUP ; UNPAIR 4 ; LAMBDA (pair bytes nat) bytes { DUP ; UNPAIR ; DUP ; SIZE ; LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "Empty bytes array" ; FAILWITH } ; DUP ; PUSH nat 2 ; SWAP ; MUL ; DUP 5 ; SWAP ; DUP ; DUG 2 ; COMPARE ; GE ; IF {} { PUSH string "Skip nibbles amount too large" ; FAILWITH } ; DUP ; PUSH bytes 0x ; SWAP ; DUP 7 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 6 ; DUP 8 ; PUSH nat 1 ; PUSH nat 2 ; DUP 5 ; EDIV ; IF_NONE { PUSH int 143 ; FAILWITH } { CAR } ; SLICE ; IF_NONE { PUSH int 143 ; FAILWITH } {} ; EXEC ; PUSH nat 15 ; PUSH (map nat nat) { Elt 0 4 ; Elt 1 0 } ; PUSH nat 2 ; DUP 5 ; EDIV ; IF_NONE { PUSH int 147 ; FAILWITH } { CDR } ; GET ; IF_NONE { PUSH int 147 ; FAILWITH } {} ; DIG 2 ; LSR ; AND ; PACK ; PUSH nat 1 ; PUSH nat 2 ; SLICE ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; DIG 3 ; CONCAT ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; LAMBDA (pair bytes (pair bytes nat)) nat { DUP ; UNPAIR 3 ; PUSH nat 0 ; PUSH bool True ; DUP 3 ; SIZE ; DUP 5 ; SIZE ; DUP 3 ; IF { SWAP ; DUP ; DUG 2 ; DUP 8 ; DUP 6 ; ADD ; COMPARE ; LT } { PUSH bool False } ; IF { DUP ; DUP 5 ; COMPARE ; LT } { PUSH bool False } ; LOOP { DUP 6 ; PUSH nat 1 ; DUP 6 ; SLICE ; IF_NONE { PUSH int 173 ; FAILWITH } {} ; DUP 6 ; PUSH nat 1 ; DUP 10 ; DUP 8 ; ADD ; SLICE ; IF_NONE { PUSH int 172 ; FAILWITH } {} ; COMPARE ; NEQ ; IF { DIG 2 ; DROP ; PUSH bool False ; DUG 2 } { PUSH nat 1 ; DIG 4 ; ADD ; DUG 3 } ; DUP 3 ; IF { SWAP ; DUP ; DUG 2 ; DUP 8 ; DUP 6 ; ADD ; COMPARE ; LT } { PUSH bool False } ; IF { DUP ; DUP 5 ; COMPARE ; LT } { PUSH bool False } } ; DROP 3 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; LAMBDA bytes bytes { DUP ; SIZE ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "Empty bytes array" ; FAILWITH } ; LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; DUP ; LAMBDA (pair bytes nat) bytes { DUP ; UNPAIR ; DUP ; SIZE ; LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "Empty bytes array" ; FAILWITH } ; DUP ; PUSH nat 2 ; SWAP ; MUL ; DUP 5 ; SWAP ; DUP ; DUG 2 ; COMPARE ; GE ; IF {} { PUSH string "Skip nibbles amount too large" ; FAILWITH } ; DUP ; PUSH bytes 0x ; SWAP ; DUP 7 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 6 ; DUP 8 ; PUSH nat 1 ; PUSH nat 2 ; DUP 5 ; EDIV ; IF_NONE { PUSH int 143 ; FAILWITH } { CAR } ; SLICE ; IF_NONE { PUSH int 143 ; FAILWITH } {} ; EXEC ; PUSH nat 15 ; PUSH (map nat nat) { Elt 0 4 ; Elt 1 0 } ; PUSH nat 2 ; DUP 5 ; EDIV ; IF_NONE { PUSH int 147 ; FAILWITH } { CDR } ; GET ; IF_NONE { PUSH int 147 ; FAILWITH } {} ; DIG 2 ; LSR ; AND ; PACK ; PUSH nat 1 ; PUSH nat 2 ; SLICE ; IF_NONE { PUSH int 148 ; FAILWITH } {} ; DIG 3 ; CONCAT ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; SWAP ; DUP 4 ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 188 ; FAILWITH } {} ; EXEC ; DUP ; PUSH nat 4 ; SWAP ; LSR ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; EQ ; IF { DROP 3 ; SWAP ; DROP ; PUSH nat 2 } { PUSH nat 1 ; DUP 3 ; COMPARE ; EQ ; IF { DROP 3 ; SWAP ; DROP ; PUSH nat 1 } { PUSH nat 2 ; DUP 3 ; COMPARE ; EQ ; IF { DROP 3 ; SWAP ; DROP ; PUSH nat 2 } { PUSH nat 3 ; DUP 3 ; COMPARE ; EQ ; IF { DROP 3 ; SWAP ; DROP } { DUP 6 ; DUP 3 ; PAIR ; PUSH string "UNEXPECTED" ; PAIR ; FAILWITH } ; PUSH nat 1 } } } ; DIG 2 ; PAIR ; EXEC } ; LAMBDA (pair bytes nat) nat { UNPAIR ; LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; PUSH nat 64 ; DUP 4 ; COMPARE ; LT ; IF {} { PUSH string "Invalid nibble position" ; FAILWITH } ; SWAP ; PUSH nat 1 ; PUSH nat 2 ; DUP 5 ; EDIV ; IF_NONE { PUSH int 229 ; FAILWITH } { CAR } ; SLICE ; IF_NONE { PUSH int 229 ; FAILWITH } {} ; EXEC ; PUSH nat 0 ; PUSH nat 2 ; DIG 3 ; EDIV ; IF_NONE { PUSH int 232 ; FAILWITH } { CDR } ; COMPARE ; EQ ; IF { PUSH nat 4 ; SWAP ; LSR } { PUSH nat 15 ; AND } } ; DUP 7 ; GET 4 ; DUP 7 ; EXEC ; DUP ; SIZE ; DUP 6 ; PUSH nat 0 ; DUP 9 ; PAIR ; EXEC ; DUP ; SIZE ; PUSH nat 0 ; DUP ; DUP 5 ; COMPARE ; EQ ; IF { DROP 12 ; SWAP ; DROP ; PUSH bytes 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 ; COMPARE ; EQ ; IF {} { PUSH string "Bad empty proof" ; FAILWITH } ; PUSH bytes 0x } { PUSH bytes 0x ; PUSH bool True ; PUSH bytes 0x ; DUP 7 ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 10 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 280 ; FAILWITH } {} ; DUP 5 ; IF { PUSH bytes 0x ; DUP 7 ; COMPARE ; EQ ; IF { DUP ; KECCAK ; DUP 20 ; COMPARE ; EQ ; IF {} { PUSH string "Bad first proof part" ; FAILWITH } } { DUP ; KECCAK ; DUP 7 ; COMPARE ; EQ ; IF {} { PUSH string "Bad hash" ; FAILWITH } } ; DUP 18 ; GET 4 ; SWAP ; DUP ; DUG 2 ; EXEC ; DUP ; SIZE ; DUP ; PUSH nat 2 ; COMPARE ; EQ ; IF { DUP 15 ; DUP 21 ; GET 3 ; DUP 4 ; PUSH nat 0 ; GET ; IF_NONE { PUSH int 299 ; FAILWITH } {} ; EXEC ; EXEC ; DUP 17 ; DUP 11 ; DUP 3 ; DUP 15 ; PAIR 3 ; EXEC ; DUP ; DIG 11 ; ADD ; DUG 10 ; DUP 14 ; PUSH nat 1 ; DUP 8 ; ADD ; COMPARE ; EQ ; IF { DIG 7 ; DROP ; DIG 7 ; DROP 4 ; SWAP ; DROP ; DUP 6 ; DUP 6 ; COMPARE ; EQ ; IF {} { PUSH string "Unexpected end of proof (leaf)" ; FAILWITH } ; DUP 16 ; GET 3 ; SWAP ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 318 ; FAILWITH } {} ; EXEC ; DUG 2 ; PUSH bool False ; DUG 3 } { DIG 9 ; DROP 4 ; SWAP ; DROP ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 323 ; FAILWITH } {} ; DUP 17 ; CAR ; SWAP ; DUP ; DUG 2 ; EXEC ; IF { KECCAK ; DUG 4 } { PUSH nat 32 ; DUP 18 ; GET 3 ; DUP 3 ; EXEC ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "INVALID_NODE" ; FAILWITH } ; DUP 17 ; GET 3 ; SWAP ; EXEC ; DUG 4 } } } { DUP ; PUSH nat 17 ; COMPARE ; EQ ; IF {} { PUSH string "INVALID_NODE_LENGTH" ; FAILWITH } ; DUP 12 ; PUSH nat 1 ; DUP 6 ; ADD ; COMPARE ; EQ ; IF { DIG 5 ; DROP ; DIG 5 ; DROP 2 ; SWAP ; DROP ; DUP 6 ; PUSH nat 1 ; DUP 7 ; ADD ; COMPARE ; EQ ; IF { DUP 16 ; GET 3 ; SWAP ; PUSH nat 16 ; GET ; IF_NONE { PUSH int 338 ; FAILWITH } {} ; EXEC ; DUG 2 ; PUSH bool False ; DUG 3 } { DUP 10 ; DUP 6 ; DUP 16 ; PAIR ; EXEC ; PUSH nat 0 ; DUP 18 ; GET 3 ; DIG 3 ; DIG 3 ; GET ; IF_NONE { PUSH int 353 ; FAILWITH } {} ; EXEC ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "Invalid exclusion proof" ; FAILWITH } ; PUSH bytes 0x ; DUG 2 ; PUSH bool False ; DUG 3 } } { DIG 7 ; DROP 2 ; SWAP ; DROP ; DUP 8 ; SIZE ; DUP 7 ; COMPARE ; LT ; IF {} { PUSH string "Continuing branch has depleted path" ; FAILWITH } ; DUP 11 ; DUP 7 ; DUP 17 ; PAIR ; EXEC ; GET ; IF_NONE { PUSH int 371 ; FAILWITH } {} ; PUSH nat 1 ; DIG 6 ; ADD ; DUG 5 ; DUP 17 ; CAR ; SWAP ; DUP ; DUG 2 ; EXEC ; IF { KECCAK ; DUG 4 } { PUSH nat 32 ; DUP 18 ; GET 3 ; DUP 3 ; EXEC ; SIZE ; COMPARE ; EQ ; IF {} { PUSH string "INVALID_NODE" ; FAILWITH } ; DUP 17 ; GET 3 ; SWAP ; EXEC ; DUG 4 } } } } { DROP } ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } } ; DUP 8 ; GET 4 ; DUP 5 ; GET ; IF_NONE { PUSH string "UNPROCESSED_BLOCK_STATE" ; FAILWITH } {} ; DUP ; LAMBDA (pair nat (map address bytes)) (option bytes) { DUP ; UNPAIR ; EMPTY_MAP bytes nat ; DUP 3 ; ITER { SWAP ; DUP ; DUG 2 ; PUSH nat 1 ; DIG 3 ; DUP 4 ; CDR ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; SOME ; DIG 2 ; CDR ; UPDATE } ; DUP ; PUSH bytes 0x ; SWAP ; ITER { CAR ; DUP 3 ; DUP 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 4 ; DUP 3 ; GET ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; PUSH nat 0 ; DUP 3 ; SIZE ; COMPARE ; EQ ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; PUSH bool True } { DIG 3 ; DROP ; DIG 3 ; DROP ; DUP ; DUG 3 ; GET ; IF_NONE { PUSH int 113 ; FAILWITH } {} ; COMPARE ; LT } ; IF { DROP ; NONE bytes } { SOME } } ; SWAP ; DUP 11 ; CAR ; CAR ; GET 3 ; PAIR ; EXEC ; IF_NONE { PUSH string "NO_CONSENSUS_FOR_STATE" ; FAILWITH } {} ; LAMBDA bytes (map nat bytes) { LAMBDA bytes nat { LAMBDA bytes nat { LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; DUP ; DUP 3 ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 297 ; FAILWITH } {} ; EXEC ; DUP ; PUSH nat 128 ; COMPARE ; GT ; IF { DROP 3 ; PUSH nat 1 } { DUP ; PUSH nat 184 ; COMPARE ; GT ; IF { SWAP ; DROP ; SWAP ; DROP ; PUSH int 1 ; PUSH nat 128 ; DIG 2 ; SUB ; ADD ; ISNAT ; IF_NONE { PUSH int 303 ; FAILWITH } {} } { DUP ; PUSH nat 192 ; COMPARE ; GT ; IF { PUSH nat 183 ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH int 307 ; FAILWITH } {} ; DUP ; PUSH nat 1 ; SWAP ; DIG 3 ; DUP 5 ; PUSH nat 1 ; DIG 6 ; SIZE ; SUB ; ISNAT ; IF_NONE { PUSH int 310 ; FAILWITH } {} ; PUSH nat 1 ; SLICE ; IF_NONE { PUSH int 311 ; FAILWITH } {} ; DIG 4 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 314 ; FAILWITH } {} ; EXEC ; ADD ; ADD } { DUP ; PUSH nat 248 ; COMPARE ; GT ; IF { SWAP ; DROP ; SWAP ; DROP ; PUSH int 1 ; PUSH nat 192 ; DIG 2 ; SUB ; ADD ; ISNAT ; IF_NONE { PUSH int 319 ; FAILWITH } {} } { PUSH nat 247 ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH int 322 ; FAILWITH } {} ; DUP ; PUSH nat 1 ; SWAP ; DIG 3 ; DUP 5 ; PUSH nat 1 ; DIG 6 ; SIZE ; SUB ; ISNAT ; IF_NONE { PUSH int 325 ; FAILWITH } {} ; PUSH nat 1 ; SLICE ; IF_NONE { PUSH int 326 ; FAILWITH } {} ; DIG 4 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 329 ; FAILWITH } {} ; EXEC ; ADD ; ADD } } } } } ; LAMBDA bytes nat { LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; SWAP ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 339 ; FAILWITH } {} ; EXEC ; DUP ; PUSH nat 128 ; COMPARE ; GT ; IF { DROP ; PUSH nat 0 } { DUP ; PUSH nat 184 ; COMPARE ; GT ; IF { PUSH bool True } { DUP ; PUSH nat 192 ; SWAP ; COMPARE ; GE ; IF { DUP ; PUSH nat 248 ; COMPARE ; GT } { PUSH bool False } } ; IF { DROP ; PUSH nat 1 } { DUP ; PUSH nat 192 ; COMPARE ; GT ; IF { PUSH nat 1 ; PUSH nat 183 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { PUSH int 356 ; FAILWITH } {} ; ADD } { PUSH nat 1 ; PUSH nat 247 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { PUSH int 359 ; FAILWITH } {} ; ADD } } } } ; DUP ; PUSH nat 0 ; SWAP ; DUP 5 ; EXEC ; DUP 5 ; SIZE ; DUP ; DUP 3 ; COMPARE ; LT ; LOOP { DUP 5 ; DUP 7 ; DUP 4 ; DUP 4 ; SUB ; ISNAT ; IF_NONE { PUSH int 240 ; FAILWITH } {} ; DUP 5 ; SLICE ; IF_NONE { PUSH int 241 ; FAILWITH } {} ; EXEC ; DIG 2 ; ADD ; SWAP ; PUSH nat 1 ; DIG 3 ; ADD ; DUG 2 ; DUP ; DUP 3 ; COMPARE ; LT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; LAMBDA bytes nat { LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; DUP ; DUP 3 ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 297 ; FAILWITH } {} ; EXEC ; DUP ; PUSH nat 128 ; COMPARE ; GT ; IF { DROP 3 ; PUSH nat 1 } { DUP ; PUSH nat 184 ; COMPARE ; GT ; IF { SWAP ; DROP ; SWAP ; DROP ; PUSH int 1 ; PUSH nat 128 ; DIG 2 ; SUB ; ADD ; ISNAT ; IF_NONE { PUSH int 303 ; FAILWITH } {} } { DUP ; PUSH nat 192 ; COMPARE ; GT ; IF { PUSH nat 183 ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH int 307 ; FAILWITH } {} ; DUP ; PUSH nat 1 ; SWAP ; DIG 3 ; DUP 5 ; PUSH nat 1 ; DIG 6 ; SIZE ; SUB ; ISNAT ; IF_NONE { PUSH int 310 ; FAILWITH } {} ; PUSH nat 1 ; SLICE ; IF_NONE { PUSH int 311 ; FAILWITH } {} ; DIG 4 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 314 ; FAILWITH } {} ; EXEC ; ADD ; ADD } { DUP ; PUSH nat 248 ; COMPARE ; GT ; IF { SWAP ; DROP ; SWAP ; DROP ; PUSH int 1 ; PUSH nat 192 ; DIG 2 ; SUB ; ADD ; ISNAT ; IF_NONE { PUSH int 319 ; FAILWITH } {} } { PUSH nat 247 ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH int 322 ; FAILWITH } {} ; DUP ; PUSH nat 1 ; SWAP ; DIG 3 ; DUP 5 ; PUSH nat 1 ; DIG 6 ; SIZE ; SUB ; ISNAT ; IF_NONE { PUSH int 325 ; FAILWITH } {} ; PUSH nat 1 ; SLICE ; IF_NONE { PUSH int 326 ; FAILWITH } {} ; DIG 4 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 329 ; FAILWITH } {} ; EXEC ; ADD ; ADD } } } } } ; LAMBDA bytes nat { LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; SWAP ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 339 ; FAILWITH } {} ; EXEC ; DUP ; PUSH nat 128 ; COMPARE ; GT ; IF { DROP ; PUSH nat 0 } { DUP ; PUSH nat 184 ; COMPARE ; GT ; IF { PUSH bool True } { DUP ; PUSH nat 192 ; SWAP ; COMPARE ; GE ; IF { DUP ; PUSH nat 248 ; COMPARE ; GT } { PUSH bool False } } ; IF { DROP ; PUSH nat 1 } { DUP ; PUSH nat 192 ; COMPARE ; GT ; IF { PUSH nat 1 ; PUSH nat 183 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { PUSH int 356 ; FAILWITH } {} ; ADD } { PUSH nat 1 ; PUSH nat 247 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { PUSH int 359 ; FAILWITH } {} ; ADD } } } } ; LAMBDA bytes bool { PUSH bytes 0xc0 ; SWAP ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 212 ; FAILWITH } {} ; COMPARE ; GE } ; DUP ; DUP 6 ; EXEC ; IF {} { PUSH string "NOT_A_LIST" ; FAILWITH } ; DUP 4 ; DUP 6 ; EXEC ; DUP 6 ; SIZE ; EMPTY_MAP nat bytes ; DUP 5 ; DUP 9 ; EXEC ; DUP 4 ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 9 ; DUP 12 ; DUP 5 ; DUP 8 ; SUB ; ISNAT ; IF_NONE { PUSH int 268 ; FAILWITH } {} ; DUP 6 ; SLICE ; IF_NONE { PUSH int 269 ; FAILWITH } {} ; EXEC ; DIG 4 ; DUP 12 ; DUP 3 ; DUP 7 ; SLICE ; IF_NONE { PUSH int 272 ; FAILWITH } {} ; SOME ; DUP 4 ; UPDATE ; DUG 4 ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 3 ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; LAMBDA bytes bool { PUSH bytes 0xc0 ; SWAP ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 212 ; FAILWITH } {} ; COMPARE ; GE } ; LAMBDA bytes bytes { DUP ; LAMBDA bytes nat { DUP ; SIZE ; DUP ; PUSH nat 0 ; SWAP ; PUSH nat 0 ; DUP ; DUP 3 ; COMPARE ; GT ; LOOP { DUP 5 ; PUSH nat 1 ; DUP 3 ; SLICE ; IF_NONE { PUSH int 126 ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 1 ; DUP 4 ; ADD ; DUP 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 127 ; FAILWITH } {} ; MUL ; PUSH nat 1 ; PUSH nat 16 ; DUP 3 ; DUP ; PUSH nat 0 ; COMPARE ; NEQ ; LOOP { PUSH nat 0 ; PUSH nat 2 ; DUP 3 ; EDIV ; IF_NONE { PUSH int 28 ; FAILWITH } { CDR } ; COMPARE ; NEQ ; IF { SWAP ; DUP ; DUG 2 ; DIG 3 ; MUL ; DUG 2 } {} ; PUSH nat 1 ; SWAP ; LSR ; SWAP ; DUP ; MUL ; SWAP ; DUP ; PUSH nat 0 ; COMPARE ; NEQ } ; DROP 2 ; SWAP ; DROP ; PUSH bytes 0x00000000000000000000000000000000000000000000000000000000000000 ; DIG 2 ; PUSH bytes 0x050a00000020 ; CONCAT ; CONCAT ; UNPACK bls12_381_fr ; IF_NONE { PUSH int 134 ; FAILWITH } {} ; INT ; ISNAT ; IF_NONE { PUSH int 133 ; FAILWITH } {} ; MUL ; DIG 3 ; ADD ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ; DROP 2 ; SWAP ; DROP ; SWAP ; DROP } ; SWAP ; PUSH nat 1 ; PUSH nat 0 ; SLICE ; IF_NONE { PUSH int 339 ; FAILWITH } {} ; EXEC ; DUP ; PUSH nat 128 ; COMPARE ; GT ; IF { DROP ; PUSH nat 0 } { DUP ; PUSH nat 184 ; COMPARE ; GT ; IF { PUSH bool True } { DUP ; PUSH nat 192 ; SWAP ; COMPARE ; GE ; IF { DUP ; PUSH nat 248 ; COMPARE ; GT } { PUSH bool False } } ; IF { DROP ; PUSH nat 1 } { DUP ; PUSH nat 192 ; COMPARE ; GT ; IF { PUSH nat 1 ; PUSH nat 183 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { PUSH int 356 ; FAILWITH } {} ; ADD } { PUSH nat 1 ; PUSH nat 247 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { PUSH int 359 ; FAILWITH } {} ; ADD } } } ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; DIG 3 ; SIZE ; SUB ; ISNAT ; IF_NONE { PUSH int 220 ; FAILWITH } {} ; DIG 2 ; SLICE ; IF_NONE { PUSH int 222 ; FAILWITH } {} } ; DUP ; DUP 4 ; DUP 8 ; DUP 7 ; DUP 7 ; DUP 6 ; DUP 8 ; PAIR 3 ; DUP 13 ; DUP 13 ; KECCAK ; PAIR 4 ; EXEC ; EXEC ; PUSH nat 2 ; GET ; IF_NONE { PUSH int 551 ; FAILWITH } {} ; EXEC ; DUP 7 ; SWAP ; DUP ; DUG 2 ; DUP 6 ; DUP 5 ; DUP 7 ; PAIR 3 ; DUP 14 ; DUP 16 ; KECCAK ; PAIR 4 ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; EXEC } }