@aztec/accounts 0.51.0 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"transpiled":true,"noir_version":"0.33.0+61d6f251ea67204af2d17175f120e17f2e9e9156","name":"EcdsaKAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(initializer)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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"},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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ARLGHKu25X+8mD5IEPN39/y5ez7ZPb/qnm90z7+556Pc8zPu+Qp3/97dz3b3d939Tnf/z90Pc/eH3P0Sd//AXU+760t3veWuP9x63K1P3XrNrV/cfO7mN7/T3PnPnQ9cfbjx4vaf+yz4Qk4r7LQiTivqtGJOK+60u5x2t9PucfvEacZpJdxxc1opp5V2WhmnlXVaOaeVd9q9TqvgtIpOu89plZxWOWacqjitqtOqOa2602o4rabTall99Hj8v/vtfqfVcVpdp9VzWn2nNXBaQ6c1ctoDTmvstCZOa+q0B53WzGkPOa250x52WguntXRaK6e1dlobp7V1WjuntXdaB6d1dFonp3V2WhendXVaN6d1d9ojTuvhtJ5O6+W03k7r47S+TuvntP5OG+C0gU4b5LTBThvitKFOG+a04U4b4bSRThvltEedNtppY5w21mmPOW2c08Y7bYLrv9MmOm2S0yY77QmnTXHaVKdNc9qTTpvutBlOm+m0p5w2y2mznTbHaU87ba7T5jntGac967T5TlvgtOecttBpi5y22GlLnPa8015w2lKnvei0l5z2stOWOe0Vpy132gqnrXTaKqe96rTXnLbaaa87bY3T3nDaWqe96bR1TlvvtA1O2+i0TU7b7LQtTtvqtLects1p2532ttN2OO0dp+102i6n7Xbau07b47T3nLbXae87bZ/TPnDafqd96LQDTvvIaQed9rHTDjntE6cddtqnTjvitM+c9rnTjjrtmNO+cNqXTvvKaced9rXTTjjtG6eddNopp33rtO+cdtpp3zvtB6edcdqPTvvJaT877azTzjntF6f96rTzTrvgtItO+81pl5x22Wm/O+0Pp11x2lWnXXPan0677jR3MojntPhOS+C0hE5L5LTETkvitCinJXVaMqcld1oKp6V0WiqnpXZaGqeldVo6p6V3WganZXRaJqdldloWp2V1WjanZXdaDqfldFoup+V2mt9peZyW12n5nJbfaQWcVtBphZxW2GlFnFbUacWcVtxpdzntbqfd4zR3kjNOK+G0kk4r5bTSTivjtLJOK+e08k6712kVnFbRafc5rZLTKjst4LQqTqvqtGpOq+60Gk6r6bRaTqvttPudVsdpdZ1Wz2n1ndbAaQ2d1shpDzitsdOaOK2p0x50WjOnPeS05k572GktnNbSaa2c1tppbZzW1mntnNbeaR2c1tFpnZzW2WldnNbVad2c1t1pjzith9N6Oq2X03o7rY/T+jqtn9P6O22A0wY6bZDTBjttiNOGOm2Y04Y7bYTTRjptlNMeddpop41x2linPea0cU4b77QJTnvcaROdNslpk532hNOmOG2q06Y57UmnTXfaDKfNdNpTTpvltNlOm+O0p50212nznPaM05512nynLXDac05b6LRFTlvstCVOe95pLzhtqdNedNpLTnvZacuc9orTljtthdNWOm2V01512mtOW+201522xmlvOG2t09502jqnrXfaBqdtdNomp2122hanbXXaW07b5rTtTnvbaTuc9o7Tdjptl9N2O+1dp+1x2ntO2+u09522z2kfOG2/0z502gGnfeS0g0772GmHnPaJ0w477VOnHXHaZ0773GlHnXbMaV847UunfeW040772mknnPaN00467ZTTvnXad0477bTvnfaD08447Uen/eS0n5121mnnnPaL03512nmnXXDaRaf95rRLTrvstN+d9ofTrjjtqtOuOe1Pp113mlsIxHNafKclcFpCpyVyWmKnJXFalNOSOi2Z05I7LYXTUjotldNSOy2N09I6LZ3T0jstg9MyOi2T0zI7LYvTsjotm9OyOy2H03I6LZfTcjvN77Q8TsvrtHxOy++0Ak4r6LRCTivstCJOK+q0Yk4r7rS7nHa30+5xWrTTjNNKOM19L7v7rmn3fcnu+4Pd9+m675d137fqvn/UfR+n+65L9z2S7jsab7z/0Gnue/vcd+K575tz3+XmvifNfQeZ+34v991Z7nup3Hc+ue9Tct9V5L4HyH3HjvvOGfd9Lu77Tdx3h7jv5XDfeeG+T8J9V4P7HgT3HQPu8/vdZ+O7z513n+nuPi/dfRa5+5zvdk5zn0/tPvvZfa6y+8xi93nA7rN23efYus+IdZ+/6j7b1H1uqPtMTvd5l+6zJN3nNLrPQHSfL+g+u899Lp77zDn3eW7us9Lc55C5z/hyn5/lPpvKfe6T+0wl93lF7rOA3OfsjHGa+3wY99kr7nNN3GeGuM/jcOsf9zkS7jMa3OcfuM8WcO/bd++Jd+83d+/ldu+Tdu9Bdu/vde+dde9Lde/5dO+ndO9VdO8DdO+xc+9fc+8Nc++7cu9pcu8Xcu/Fce9zWew09/4M994H974C95p993p491pz9zpu9xpp9/pj99pe97pZ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","debug_symbols":"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oBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFpBnFpBnFpBnFpBnFPGBJnTSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjWDSjWDSjWDSjWDSjWAcsqYtmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFJtmFJtmFJtmFJtmFPuAJXXTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLT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ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZKe5ZB9aUtOejRu0Z+PGAUvqOGBJHQcsqeOAJXUcsKSOA5bUccCSOg5YUgfNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKCbNKCbNKCbNKCbNKOYBS+qkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWiGcWiGcWiGcWiGcU6YEldNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNY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mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlEMmlEMmlEMmlEMmlGMA5bUQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKSTOKSTOKSTOKSTOKecCSOmlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGsWhGsWhGsWhGsWhGsQ5YUhfNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbN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oxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFpxlFpxlFpxlFpxlFP2BJ7TSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSjGDSjGDSjGDSjGDSjGAcsqYNmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFJNmFJNmFJNmFJNmFPOAJXXSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLRjGLRjGLRjGLRjGIdsKQumlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlFsmlFsmlFsmlFsmlHsA5bUTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKQzOKQzOKQzOKQzOKc8CSemhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhG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M4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pBM4pBM4pBM4pBM4pxwJI6aEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaUYxaUYxaUYxaUYxD1hSJ80oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oJs0oFs0oFs0oFs0oFs0o1gFL6qIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaIZxaYZxaYZxaYZxaYZxT5gSd00o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0o9g0ozg0ozg0ozg0ozg0ozgHLKmHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhQHZhTzgBnFsyBWUp8FsZL6LIiV1GdBrKQ+C2Il9VkQK6nPglhJfRbESuqzIFpSw4ziWRAtqWFG8SyIltQwo3gWREtqmFE8C6IlNcwongXRkhpmFM+CaEkNM4pnQbSkhhnFsyBaUsOM4lkQLalhRvEsiJbUMKN4FkRLaphRPAuiJTXMKJ4F0ZIaZhTPgmhJDTOKZ0G0pIYZxbMgWlLDjOJZEC2pYUbxLIiW1DCjeBZES2qYUTwLoiU1zCieBdGSGmYUz4JoSQ0zimdBtKSGGcWzIFpSw4ziWRAtqWFG8SyIltQwo3gWREtqmFE8C6IlNcwongXRkhpmFM+CaEkNM4pnQbSkhhnFsyBaUsOM4lkQLalhRvEsiJbUMKN4FkRLaphRPAuiJTXMKJ4F0ZIaZhTPgmhJDTOKZ0G0pIYZxbMgWlLDjOJZEC2pYUbxLIiW1DCjeBZES2qYUTwLoiU1zCieBcGSWmhGUWhGUWhGUWhGUQ5YUgvNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKCrNKCrNKCrNKCrNKOoBS2qlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUW9u1E8bzX98qO//bj3gj57cWZdXp1Tl5eLHJ9WUnqppOPy6vij2bv7xy9tVjY1q5uatU3N+qZmQZ/on7w483h7cdZ78Sb9vXzQ5/+/pXzQtPBvKb/J/6WcDc57sy125b+U8zckuRRu4vqn1//RMHp2+Q0NB3p++R0No2eY39Eweo6RGXn/tBOtTxp4rtkk+/JxnTP/+uP67sL6S5uNTc3mpmZrU7PoKekf/33C7FJJ/PD7RDzZ7c4vm80nu935dbNPdrvz62af7Hbn180+2e3Or5v1Tc0+1wR1pdnnmqCuNPtcE9SVZjdNULlpgqpNE1RtmqBq0wRVmyaou28k+dJmN01QtWmCqk0TVG2aoGrTBNWbJqjeNEH1pgmqN01Qd98U9KXNbpqgetME1ZsmqN40QfWmCWo2TVCzaYKaTRPUbJqg7r7B60ub3TRBzaYJajZNULNpgppFE5QdiyYoOxZNUHYsmqDsWDRB2eGbml00QdmxaIKyY9EEZceiCcqOTROUbJqgZNMEJZsmKNk0Qd194+WXNrtpgpJNE5RsmqBk0wQlmyYo3TRB6aYJSjdNULppgrr7JtovbXbTBKWbJijdNEHppglKN01QtmmCsk0TlG2aoGzTBHX3DdFf2uymCco2TVC2aYKyTRPUs237/mWzz7bt+9fNbpqgnm3b96+b3TRBPdu27183u2mC8k0TlG+aoNh7x2/d7KYJir1v/NbNbpqg2HvGb93spgnqyXaSX2l20wT1ZDvJrzS7aYLatJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0kt007yW3TTnLbtJPcNu0k9007yX3TTnLftJPcN+0k98M3NbtogvJNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9007y2LSTPDbtJI9NO8lj007yOHxTs4smqNi0kzw27SSPTTvJY9NO8ti0kzw27SSPTTvJY9NO8ti0kzw27SSPTTvJY9NO8ti0kzw27SSPTTvJY9NO8ti0kzw27SSPTTvJY9NO8ti0kzw27SSPTTvJY9NO8ti0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UWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlG0WhG0WhG0WhG0WhG0Q5YUhvNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKDrNKDrNKDrNKDrNKPoBS2qnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGcWgGcWgGcWgGcWgGcU4YEkdNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKOYNKOYNKOYNKOYNKOYByypk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUi2YUi2YUi2YUi2YU64AlddGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtGMYtOMYtOMYtOMYtOMYh+wpG6aUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaUWyaURyaURyaURyaURyaUZwDltRDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4pDM4oDM4p9wIziWRArqc+CWEl9FsRK6rMgVlKfBbGS+iyIldRnQaykPgtiJfVZEC2pYUbxLIiW1DCjeBZES2qYUTwLoiU1zCieBdGSGmYUz4JoSQ0zimdBtKSGGcWzIFpSw4ziWRAtqWFG8SyIltQwo3gWREtqmFE8C6IlNcwongXRkhpmFM+CaEkNM4pnQbSkhhnFsyBaUsOM4lkQLalhRvEsiJbUMKN4FkRLaphRPAuiJTXMKJ4F0ZIaZhTPgmhJDTOKZ0G0pIYZxbMgWlLDjOJZEC2pYUbxLIiW1DCjeBZES2qYUTwLoiU1zCieBdGSGmYUz4JoSQ0zimdBtKSGGcWzIFpSw4ziWRAtqWFG8SyIltQwo3gWREtqmFE8C6IlNcwongXRkhpmFM+CaEkNM4pnQbSkhhnFsyBaUsOM4lkQLalhRvEsiJbUMKN4FkRLaphRPAuiJTXMKJ4F0ZIaZhTPgmBJLTSjKDSjKDSjKDSjKAcsqYVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFIVmFJVmFJVmFJVmFJVmFPWAJbXSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLRjKLRjKLRjKLRjKIdsKQ2mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlF0mlF0mlF0mlF0mlH0A5bUTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKQTOKQTOKQTOKQTOKccCSOmhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWlGMWlGMWlGMWlGMQ9YUifNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKBbNKBbNKBbNKBbNKNYB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qDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjqDSjaDSjaDSjaDSjaDSjaAcsqY1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFI1mFJ1mFJ1mFJ1mFJ1mFP2AJbXTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKLTjGLQjGLQjGLQjGLQjGIcsKQOmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlEMmlFMmlFMmlFMmlFMmlHMA5bUSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKSTOKRTOKRTOKRTOKRTOKdcCSumhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWhGsWlGsWlGsWlGsWlGsQ9YUjfNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKDbNKA7NKA7NKA7NKA7NKM4BS+qhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcW5u1HUw/zyo7/9uPeCPntxZl1enVOXl4scn1ZSeqmk4/Lq+N5sbGo2NzVbm5rtTc3OomZJlvWTF2ceby/Oei/epL+XD/r8/7eUD5oW/i3lG/m/FPm2P/zSbItd+S9FTeRSuInrn17/R8O+rWH0/PI7GkbPML+jYfQcI9++eru8WrQ+aeC5ZpPsy8d1zvzwcf1cs8mvm7273v7SZmVTs7qpWfSU9I//PmF2qSR++H3i7lr+S5t9studXzf7ZLc7v272yW53ft3sk93u/LrZJ7vd+WWz9VwT1JVmn2uCutLsc01QV5rdNEHdfYvFlza7aYKqTRNUbZqgatMEVZsmqN40QfWmCao3TVC9aYK6+3aZL2120wTVmyao3jRB9aYJqjdNULNpgppNE9RsmqBm0wR1961PX9rspglqNk1Qs2mCmk0T1OyZoOQ4jj0j1Ldu98xQ37rdM0R963bPFPWtW1/V7Z456lu3ewapb93umaS+dbtnlPrW7apZSlbNUrJqlpJVs5SsmqXuvjTxa7tdNUvJqllKVs1SsmqWklWzlK6apXTVLKWrZildNUvdfa3p13a7apbSVbOUrpqldNUspatmKVs1S9mqWcpWzVK2apa6++Lhr+121Sxlq2YpWzVL2apZylbNUr5qlvJVs5SvmqV81Sz1bKvBr3S7apZ6tuXgV7pdNUs923rwK92umqVi1SwVq2apWDVLsbeV37xbX9XtqlmKvaT85t2umqWebJ35tW5XzVJPttD8WrerZqknW2l+rdtVs9Sipebful01Sy1aa/6t21Wz1KLF5t+6XTVLLVpt/q3bVbPUouXm37pdNUstWm/+rdtVs9SiBefful01Sy1acf6t21Wz1KIl59+6XTVLLVpz/q3bVbPUokXn37pdNUstWnX+rdtVs9SiZefful01Sy1ad/6t21Wz1KKF59+6XTVLLVp5/q3bVbPUoqXn37pdNUstWnv+rdtNs5Ss2nsuq/aey6q957Jq77kcvqrbTbOUrNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nuuqvee6au+5rtp7rqv2nuvhq7rdNEvpqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua3ae26r9p7bs+09L71U0p90+2Sz1JVu/d7dWubbj3bRX3crMXG8/eiUkj91+72DePgOEt1B6jGXDs7/0886qIfvoB++g3n0Du6/7/sf6qCO9suPFolryZt9Sd6c+SF577/v+0u71VXd2qpufVW37HnjH+32yuwv7Nnk1t2y55hbd8ueeW7dLXs+unG3+lyz1LVun2uWutbtc81S17p9rlnqWre+qttVs5SumqV01Sylq2YpXTVL2apZylbNUrZqlrJVs9T9931/aberZilbNUvZqlnKVs1StmqW8lWzlK+apXzVLOWrZqn77/v+0m5XzVK+apbyVbOUr5qlfNUsFatmqVg1S8WqWSpWzVL33/f9pd2umqVi1SwVq2apWDVLxapZKlfNUrlqlspVs1SumqXuv+/7S7tdNUvlqlkqV81SuWqWylWzVK2apWrVLFWrZqlaNUvdf9/3l3a7apaqVbNUrZqlatUsVatmqV41S/WqWapXzVK9apa6/77vL+121SzVq2apXjVL9apZqlfNUrNqlppVs9SsmqVm1Sx1/33fX9rtqllqVs1Ss2qWmlWz1GyapfzYNEv5sWmW8mPTLOXHplnKD1/V7aZZyuF7xG/d7aZZyuH7yW/d7apZ6sn2nl/rdtUs9WR7z691u2qWerK959e6XTVLrdp77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77qv2nvuqvee+au+5r9p77s+297z08vL+pFtf1e3dZ6nD/PKjv/24X3Y7NW9nI9NiV7pVE7kUbuL6p9d/7zjXdVzrOu51Hc+2ju+/C/3LO5Z1Heu6jm1dx76u43Uz1913pMv4ew9lHzv+XlHhKmpcRUOr6CY7uzP67R+SbVcqKnv/9Snef3TpW0WCq0hxFRmuIsdVFLiKEldR4SpqXEVDq+juu4Gvfor0/TO7jkv5U5+c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IBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIBXnIA3nIA3nIA3nIA3nIO2gZbbhHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKThHKTjHKTjHKTjHKTjHKQftMx2nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIN0nIMMnIMMnIMMnIMMnIOMg5bZgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQgXOQiXOQiXOQiXOQiXOQedAyO3EOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOMnEOsnAOsnAOsnAOsnAOsg5aZhfOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQRbOQTbOQTbOQTbOQTbOQfZBy+zGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjGOcjG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kIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIpzkIZzkIZzkIZzkIZzkHbQMttwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJwDtJxDtJxDtJxDtJxDtIPWmY7zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkEGzkEGzkEGzkEGzkHGQcvswDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIxDnIxDnIxDnIxDnIPGiZnTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmXd3kHqYX370tx/3XtFnL86sy6tz6vJykePTSkovlXRcXh3fu727sfzabmVVt7qqW1vVra/qFvTZ/smLM4+3F2e9V2/Sb/WDJoF/U/2gueHfVH+T/2s5O5z3blvsyn8taiKXwk1c//T67x2jp5jf0XGiJ5nf0jF6mvktHaMnGpmR90890fqsg+eaUrIvn9s588Pn9t0V99d2G6u6zVXd1qpu0fPSP/7bhdmlkvjxt4t8shufX3dbT3bjc6XbJ7vxudLtk934XOn2yW58rnTrq7p9rlnqWrfPNUtd6/a5Zqlr3a6apWrVLNWrZqleNUv1qlmqV81Sd9968rXdrpqletUs1atmqV41S/WqWWpWzVKzapaaVbPUrJql7r6N6Gu7XTVLzapZalbNUrNqlppNs1Qdm2apOjbNUnVsmqXq2DRL1eGrut00S9WxaZaqY9MsVcemWaqOVbOUrJqlZNUsJatmKVk1S919e9/XdrtqlpJVs5SsmqVk1Swlq2YpXTVL6apZSlfNUrpqlrr7Vs2v7XbVLKWrZildNUvpqllKV81StmqWslWzlK2apWzVLHX3bbdf2+2qWcpWzVK2apayVbOUrZqlfNUs5atmKV81S/mqWeruW6i/tttVs5SvmqV81Szlq2apZ9so/utun22j+JVuV81Sz7ZR/Eq3q2apZ9sofqXbVbNUrJqlYtUsxd5tfvNuV81S7J3mN+921SzF3mV+825XzVJPtvf8WrerZqkn23t+rdtVs9Sqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nteqvee1au95rdp7Xqv2nveqvee9au95r9p73qv2nvfhq7rdNEv1qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrvea/ae96r9p73qr3nvWrv+azaez6r9p7Pqr3ns2rv+Ry+qttNs9Ss2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q957Nq7/ms2ns+q/aez6q95/9/e3e3I8dypWf4lnL9r3U1hmZgGAIEyZiRDfjA9z7BLXY393SLJZaqol8qeCJsQlUVXxQzPkZn55M5R933fI667/kcdd/zOeq+53PUfc/nqPuez1H3PZ+j7ns+R933fI667/kcdd/zOeq+53PUfc/nqPuez1H3PZ+j7ns+R933fI667/kcdd/zOeq+53PUfc/nqPuez1H3PZ+j7ns+R933fI667/mcdN9zv0667/ma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HKTiHKThHKThHKThHKThHKRdtM42nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIM0nIN0nIN0nIN0nIN0nIP0i9bZjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQjnOQgXOQgXOQgXOQgXOQcdE6O3AOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnAOMnEOMnEOMnEOMnEOMi9aZyfOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQSbOQRbOQRbOQRbOQRbOQdZF6+zCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjCOcjGOcjGOcjGOcjGOci+aJ3dOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZOAfZ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B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4B+k4Bxk4Bxk4Bxk4Bxk4BxkXrbMD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAD5yAT5yAT5yAT5yAT5yDzonV24hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4hxk4Rxk4Rxk4Rxk4RxkXbTOLpyDLJyDLJyDLJyDLJyDLJyDLJyDLJyDLJyDLJyDLJyDLJyDLJyDLJyDLJyD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"},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)","aztec(view)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":5,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"7b3RruxIk533Lv+1LshkkEzqVQzDGNmyMcBgZEhjA4agd/fu3k3WPs3KirM1WTsiMr4b44zFrpPxrf8w11qsSv73f/wf//k//T//1//2z//6f/6X//aP//i//Pd//Mt/+d//6d/++b/868f/9d//x3/4x3/6r//8L//yz//X//b1//c/pj/+P6X+ef1/+7//6V//+D//27/903/9t3/8x3Xa/8M//vO//h8ff6rHx3//f/7zv/znf/zHZT/+x//6H/5Rjm//J0t59p9UqX/9J3Vdbv/J8v3/RL7/n6zf/0+27/8n+/f/k/r9/+T49n8i0/f/k/n7/8n31Zfvqy/fV1++r758X335vvryffXl++qv31d//b766/fVX7+v/vp99dfvq79+X/31++qv31d//b762/fV376v/vZ99bfvq799X/3t++pv31d/+7762/fV376v/v599ffvq79/X/39++rv31d//776+/fV37+v/v599ffvq1+/r379vvr1++rX76tfv69+/b769fvq1++rX7+vfv2++sf31T++r/7xffWP76s/T0/n36bjr/9mP+Zf/pv/cL92Xue/Lt7m4/E3zKU+uXqe6/bX1XOZ5Lq6yJ/LmSdfy5l9Laf4Ws7iazniazmrr+Vsvpaz+1pO9bUcX3fl4uuuXHzdlYuvu3LxdVcuvu7Kxdddufi6Kxdfd+Xi665cfN2VF1935eWH/6Gv+9MnJtP2uZrV1Wp++H/I2zSdF3+s4Laaw9NqZHK1mtnVaoqr1XRwFsuX1Yh2wznqefXHH8vjs+v0uR5xtp7V2Xo2Z+vZna2nOlvP4Ws96+RsPbOz9RRn63F2f16d3Z9XZ/fn1dn9eXV2f16d3Z9XZ/fnzdn9eXN2f96c3Z83Z/fnzdn9efvh+3OZyhl3Pv4439ezOVvP7mw91dl6Dl/r2Sdn65mdrac4W8/ibD3ibD3O7s+7s/vz7uz+vDu7P+/O7s/V2f25Ors/V2f35+rs/lyd3Z+rs/tz/fH78/pYz1bv69mdrac6W8/haz3H5Gw9s7P1FGfrWQzX87GGr+u5X/0oH45jv64t8qyoWI7rmw4y377pcEiSOdckc25J5tyTzFmTzHmkmLNMU5I55yRzFj9z/rmen97n5unE8/HHel/P5mw9P32fmctyrafst/XMk7P1zM7WU5yt56dzwceTjms9X7+N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"}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000906cb9c3"},{"kind":"string","value":"EcdsaPublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}}],"kind":"struct","path":"EcdsaKAccount::constructor_parameters"}}],"kind":"struct","path":"EcdsaKAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}}],"kind":"struct","path":"EcdsaKAccount::entrypoint_parameters"}}],"kind":"struct","path":"EcdsaKAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaKAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaKAccount::verify_private_authwit_abi"}]}},"file_map":{"104":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::{raw_storage_read, storage_read}\n};\n\nstruct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"110":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, gas::Gas,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, public_call_stack_item::PublicCallStackItem,\n public_call_stack_item_compressed::PublicCallStackItemCompressed, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n let call_request = PublicCallRequest { item, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n self.public_teardown_call_request = PublicCallRequest {\n item,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"118":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\nuse std::{\n embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n utils::point::point_to_bytes, note::note_interface::NoteInterface,\n encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n},\n keys::public_keys::{OvpkM, IvpkM}\n};\n\npub fn compute_encrypted_event_log<Event, let NB: u32, let MB: u32, let OB: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n event: Event\n) -> [u8; OB] where Event: EventInterface<NB, MB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_event(event, randomness).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; OB] = [0; OB];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = OB - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\npub fn compute_encrypted_note_log<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> [u8; M] where Note: NoteInterface<N, NB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(unsafe_rand());\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::compute_encrypted_note_log, keys::public_keys::{OvpkM, IvpkM},\n test::mocks::mock_note::MockNoteBuilder\n };\n use dep::protocol_types::{address::AztecAddress, point::Point};\n use std::test::OracleMock;\n\n #[test]\n fn test_encrypted_note_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38\n ];\n for i in 0..encrypted_note_log_from_typescript.len() {\n assert_eq(log[i], encrypted_note_log_from_typescript[i]);\n }\n assert_eq(encrypted_note_log_from_typescript.len(), log.len());\n }\n}\n"},"119":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_current_public_keys, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{\n hash::sha256_to_field, address::AztecAddress, point::Point, abis::note_hash::NoteHash,\n constants::MAX_NOTE_HASHES_PER_CALL\n};\n\nunconstrained fn compute_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n )\n}\n\nfn compute<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let encrypted_log: [u8; M] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n let log_hash = sha256_to_field(encrypted_log);\n (encrypted_log, log_hash)\n}\n\nfn emit_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n inner_compute: fn(AztecAddress, Field, Field, OvpkM, IvpkM, AztecAddress, Note) -> ([u8; M], Field)\n) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (encrypted_log, log_hash) = inner_compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute_unconstrained);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute_unconstrained);\n }\n}\n"},"120":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::aes128::aes128_encrypt;\n\nuse crate::{keys::public_keys::IvpkM, utils::point::point_to_bytes};\n\nstruct EncryptedLogOutgoingBody {\n eph_sk: Scalar,\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(eph_sk: Scalar, recipient: AztecAddress, recipient_ivpk: IvpkM) -> Self {\n Self { eph_sk, recipient, recipient_ivpk }\n }\n\n /// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n /// be able to derive the key with which the incoming log can be decrypted.\n pub fn compute_ciphertext(self, ovsk_app: Scalar, eph_pk: Point) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high = self.eph_sk.hi.to_be_bytes(32);\n let serialized_eph_sk_low = self.eph_sk.lo.to_be_bytes(32);\n\n let address_bytes = self.recipient.to_field().to_be_bytes(32);\n let serialized_recipient_ivpk = point_to_bytes(self.recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes(32).as_array();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::{encrypted_logs::outgoing_body::EncryptedLogOutgoingBody, keys::public_keys::IvpkM};\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n scalar::Scalar, point::Point, hash::poseidon2_hash_with_separator\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n use crate::context::PrivateContext;\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"121":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\nstruct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes(32).as_array();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nfn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{scalar::Scalar, point::Point};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\nstruct EncryptedLogIncomingBody<let M: u32> {\n plaintext: [u8; M]\n}\n\nimpl<let M: u32> EncryptedLogIncomingBody<M> {\n pub fn from_note<T, let N: u32>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N, M> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T, let MR: u32>(\n event: T,\n randomness: Field\n ) -> Self where T: EventInterface<M, MR> {\n let mut plaintext = event.private_to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, traits::Serialize,\n abis::event_selector::EventSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::NoteInterface},\n encrypted_logs::incoming_body::EncryptedLogIncomingBody, event::event_interface::EventInterface,\n context::PrivateContext, keys::public_keys::IvpkM\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: Field = 3;\n global ADDRESS_NOTE_BYTES_LEN = 32 * 3 + 64;\n\n impl NoteInterface<ADDRESS_NOTE_LEN, ADDRESS_NOTE_BYTES_LEN> for AddressNote {\n fn compute_note_hiding_point(self) -> Point {\n crate::generators::Ga1\n }\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(_self: Self, _context: &mut PrivateContext, _note_hash_for_nullify: Field) -> Field {\n 1\n }\n\n fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_BYTES_LEN] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_BYTES_LEN] = [0; ADDRESS_NOTE_BYTES_LEN];\n\n let storage_slot_bytes = storage_slot.to_be_bytes(32);\n let note_type_id_bytes = AddressNote::get_note_type_id().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes = serialized_note[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n fn test_encrypted_note_log_incoming_body_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n /// 1. `EncryptedLogIncomingBody::from_note` calls `note.to_be_bytes(storage_slot)` function which serializes\n /// the note to bytes - note that in the case of `AddressNote` the `to_be_bytes` function was automatically\n /// implemented by Aztec macros.\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n /// 2. `body.compute_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: Field = 3;\n global TEST_EVENT_BYTES_LEN = 32 * 3 + 64;\n global TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS = 32 * 3 + 32;\n\n impl EventInterface<TEST_EVENT_BYTES_LEN, TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_BYTES_LEN] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN] = [0; TEST_EVENT_BYTES_LEN];\n\n let randomness_bytes = randomness.to_be_bytes(32);\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn to_be_bytes(self) -> [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] = [0; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS];\n\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[32 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n }\n\n #[test]\n fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_event_log_incoming_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let event_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 185, 29, 14, 152, 216, 130, 219, 151, 80, 185, 43, 223, 167, 8, 89, 189, 88, 188, 101, 137, 255, 136, 84, 252, 79, 18, 52, 3, 110, 54, 54, 206, 244, 209, 246, 226, 207, 247, 143, 253, 211, 75, 160, 224, 172, 41, 45, 7, 208, 137, 90, 56, 59, 4, 234, 48, 53, 23, 130, 230, 49, 249, 142, 243, 170, 72, 183, 242, 49, 124, 46, 52, 198, 75, 55, 102, 56, 89, 254, 67, 59, 157, 249, 120, 184, 67, 154, 16, 148, 227, 93, 37, 120, 199, 93, 166, 80, 127, 173, 52, 80, 135, 87, 1, 168, 164, 51, 48, 126, 120, 47, 102, 211, 227, 234, 170, 208, 99, 111, 198, 170, 226, 156, 244, 241, 174, 206, 30\n ];\n\n assert_eq(event_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..event_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], event_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"},"126":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, MAX_NOTES_PER_PAGE, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, Comparator, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note. \n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value = serialized_note[selector.index].to_be_bytes(32);\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N, M> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n // Values are computed ahead of time because circuits evaluate all branches\n let is_equal = value_field == select.value.to_field();\n let is_lt = value_field.lt(select.value.to_field());\n\n if (select.comparator == Comparator.EQ) {\n assert(is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.NEQ) {\n assert(!is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LT) {\n assert(is_lt, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LTE) {\n assert(is_lt | is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GT) {\n assert(!is_lt & !is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GTE) {\n assert(!is_lt, \"Mismatch return note field.\");\n }\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N, M> {\n let note = get_note_internal(storage_slot);\n\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n context.push_note_hash_read_request(note_hash_for_read_request);\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N, M> + Eq {\n let opt_notes = get_notes_internal(storage_slot, options);\n\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N, M> + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32, let M: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N, M> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N, M> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32, let M: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N, M>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N, M> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<Note, let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"128":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{context::PrivateContext, note::{note_header::NoteHeader, note_interface::NoteInterface}};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32, let M: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N, M> {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32, let M: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N, M> {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in \n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in \n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the \n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the \n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from \n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let M: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N, M> {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"129":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::NoteInterface,\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, N, M>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n let serialized_note = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, N, M>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N, M> {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, N, M>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, N, M>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N, M> {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, notification_note_hash, nullifier_counter) == 0);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n\n"},"130":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\nstruct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting \n * a change note in a token's transfer function only when there is \"change\" left).\n */\nstruct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"138":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH, MAX_ARGS_LENGTH\n},\n traits::Hash,\n hash::{\n pedersen_hash, compute_siloed_nullifier, sha256_to_field, pedersen_commitment,\n poseidon2_hash_with_separator\n}\n};\n// Note: pedersen_commitment is used only as a re-export here\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n poseidon2_hash_with_separator(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x1cce4dbf69f14c44865919991ee1057922e34d7310ba237d71759aa422621ca9);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"141":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, point::Point};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(_note_hash_counter: u32, _encrypted_note: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(_contract_address: AztecAddress, _randomness: Field, _encrypted_event: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nunconstrained fn compute_encrypted_note_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nunconstrained fn compute_encrypted_event_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_oracle_private<T>(_contract_address: AztecAddress, _message: T, _counter: u32) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<let N: u32>(contract_address: AztecAddress, message: [Field; N], counter: u32) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, message, counter)\n}\n"},"143":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle<let N: u32>(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage,\n utils::arr_copy_slice\n};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(block_number: u32, public_data_tree_index: Field) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, public_data_tree_index);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"145":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub fn get_key_validation_request(pk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n\n"},"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle<let N: u32>(address: Field, storage_slot: Field, block_number: Field, length: Field) -> [Field; N] {}\n\nunconstrained pub fn raw_storage_read<let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> [Field; N] {\n storage_read_oracle(\n address.to_field(),\n storage_slot,\n block_number as Field,\n N as Field\n )\n}\n\nunconstrained pub fn storage_read<T, let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> T where T: Deserialize<N> {\n T::deserialize(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::address::AztecAddress;\n\n use std::test::OracleMock;\n use crate::test::mocks::mock_struct::MockStruct;\n\n global address = AztecAddress::from_field(29);\n global slot = 7;\n global block_number = 17;\n\n #[test]\n fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"152":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained fn get_public_keys_and_partial_address_oracle_wrapper(address: AztecAddress) -> [Field; 13] {\n get_public_keys_and_partial_address_oracle(address)\n}\n\npub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle_wrapper(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"154":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter)\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle<let N: u32>(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\nunconstrained pub fn notify_nullified_note<let N: u32>(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_nullified_note_oracle(nullifier, note_hash, counter)\n}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let NB: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N, NB> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"158":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V, Context> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T, Context> Storage<T> for Map<K, T, Context> {}\n\nimpl<K, V, Context> Map<K, V, Context> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n"},"163":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable<T, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl<T, Context> Storage<T> for PublicMutable<T, Context> {}\n\nimpl<T, Context> PublicMutable<T, Context> {\n // docs:start:public_mutable_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, &mut PublicContext> where T: Serialize<T_SERIALIZED_LEN> + Deserialize<T_SERIALIZED_LEN> {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) {\n self.context.storage_write(self.storage_slot, value);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, UnconstrainedContext> where T: Deserialize<T_SERIALIZED_LEN> {\n unconstrained pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n}\n"},"179":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes}, note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions, note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\nstruct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor. \n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<N, M>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"181":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result = pk.x.to_be_bytes(32);\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result.as_array()\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"198":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize}, point::Point};\n\nstruct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: Point::empty(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x:fields[0], y: fields[1], is_infinite: fields[2] as bool},\n sk_app: fields[3],\n }\n }\n}\n\n"},"2":{"path":"std/array.nr","source":"use crate::cmp::Ord;\nuse crate::option::Option;\nuse crate::convert::From;\n\nimpl<T, let N: u32> [T; N] {\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n pub fn sort(self) -> Self where T: Ord {\n self.sort_via(|a: T, b: T| a <= b)\n }\n\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n let sorted_index = unsafe {\n // Safety: These indices are asserted to be the sorted element indices via `find_index`\n let sorted_index: [u32; N] = self.get_sorting_index(ordering);\n\n for i in 0..N {\n let pos = find_index(sorted_index, i);\n assert(sorted_index[pos] == i);\n }\n\n sorted_index\n };\n\n // Sort the array using the indexes\n let mut result = self;\n for i in 0..N {\n result[i] = self[sorted_index[i]];\n }\n // Ensure the array is sorted\n for i in 0..N - 1 {\n assert(ordering(result[i], result[i + 1]));\n }\n\n result\n }\n\n /// Returns the index of the elements in the array that would sort it, using the provided custom sorting function.\n unconstrained fn get_sorting_index<Env>(self, ordering: fn[Env](T, T) -> bool) -> [u32; N] {\n let mut result = [0; N];\n let mut a = self;\n for i in 0..N {\n result[i] = i;\n }\n for i in 1..N {\n for j in 0..i {\n if ordering(a[i], a[j]) {\n let old_a_j = a[j];\n a[j] = a[i];\n a[i] = old_a_j;\n let old_j = result[j];\n result[j] = result[i];\n result[i] = old_j;\n }\n }\n }\n result\n }\n\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n // Apply a function to each element of an array, returning a new array\n // containing the mapped elements.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. This function is also sometimes\n // called `foldl`, `fold_left`, `reduce`, or `inject`.\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. Unlike fold, reduce uses the first\n // element of the given array as its starting accumulator value.\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n // Returns true if all elements in the array satisfy the predicate\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n // Returns true if any element in the array satisfies the predicate\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Convert a sequence of bytes as-is into a string.\n /// This function performs no UTF-8 validation or similar.\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\n// helper function used to look up the position of a value in an array of Field\n// Note that function returns 0 if the value is not found\nunconstrained fn find_index<let N: u32>(a: [u32; N], find: u32) -> u32 {\n let mut result = 0;\n for i in 0..a.len() {\n if a[i] == find {\n result = i;\n }\n }\n result\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"22":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite) | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n// This is a hack as returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"23":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes = x.to_le_bytes(32);\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose_hint, decompose, compute_lt, assert_gt, gt, lt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"24":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"248":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f);\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript = 0x2499880e2b1b831785c17286f99a0d5122fee784ce7b1c04e380c4a991da819a;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n"},"254":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"255":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"258":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"260":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc, point::Point\n};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"266":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: Field = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point {\n x: 0,\n y: 0,\n is_infinite: false\n }\n }\n}\n"},"267":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, CONTRACT_INSTANCE_LENGTH},\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"27":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\nmod sha256;\nmod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\nuse sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\ntrait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"279":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr","source":"use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N]\n) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root<let N: u32>(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n assert(false, \"depth should be between 0 and 10\");\n 0\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n"},"283":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"304":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes = max_value.to_be_bytes(32);\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n"},"306":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"318":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash_with_separator,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"32":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"320":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"321":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"379":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_k_account_contract/src/main.nr","source":"// Account contract that uses ECDSA signatures for authentication on the same curve as Ethereum.\n// The signing key is stored in an immutable private note and should be different from the signing key.\ncontract EcdsaKAccount {\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteGetterOptions, PrivateContext, PrivateImmutable};\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys,\n keys::getters::get_current_public_keys\n };\n\n use dep::aztec::protocol_types::abis::call_context::CallContext;\n use dep::std;\n\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness\n };\n\n use dep::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[aztec(storage)]\n struct Storage {\n public_key: PrivateImmutable<EcdsaPublicKeyNote>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[aztec(private)]\n #[aztec(initializer)]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\n let this = context.this_address();\n let this_keys = get_current_public_keys(&mut context, this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note_with_keys(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload);\n }\n\n #[aztec(private)]\n #[aztec(noinitcheck)]\n #[aztec(view)]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(outer_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes(32).as_array();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n let verification = std::ecdsa_secp256k1::verify_signature(public_key.x, public_key.y, signature, hashed_message);\n assert(verification == true);\n\n true\n }\n}\n"},"380":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr","source":"use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteInterface, NoteGetterOptions, PrivateContext};\n\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator}\n};\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: Field = 5;\n// ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN: Field = 5 * 32 + 64;\n\n// Stores an ECDSA public key composed of two 32-byte elements\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[aztec(note)]\nstruct EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NoteInterface<ECDSA_PUBLIC_KEY_NOTE_LEN, ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN> for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = npk_m_hash\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n \n [x, last_x, y, last_y, self.npk_m_hash]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x = serialized_note[0].to_be_bytes(32);\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes(32)[31];\n\n let part_y = serialized_note[2].to_be_bytes(32);\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes(32)[31];\n\n EcdsaPublicKeyNote { x, y, npk_m_hash: serialized_note[4], header: NoteHeader::empty() }\n }\n\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator([\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator([\n note_hash_for_nullify,\n secret,\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], npk_m_hash: Field) -> Self {\n EcdsaPublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"53":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"67":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"68":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties \n * (e.g. protocols or other users) to execute an action on their behalf.\n * \n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be \n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few \n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can \n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be \n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n * \n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer. \n * \n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is \n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n * \n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline \n * how this would look in private, and then in public later. \n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX). \n * `Alice` would make a `deposit` transaction, that she is executing using her account contract. \n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token` \n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to \n * convince the `Token` contract that it is allowed to do so. \n * \n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the \n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to \n * execute that call.\n * \n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her \n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n * \n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n * \n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts. \n * \n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n * \n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store \n * the messages that we have approved. \n * \n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `keccak256(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a colission and we return \n * a success flag.\n * \n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be \n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the \n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n * \n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains. \n */\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n/** \n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n * \n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/** \n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n * \n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n * \n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize \n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\"),\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/** \n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n * \n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n * \n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/** \n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n * \n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the \n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n * \n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n FunctionSelector::from_signature(\"consume((Field),Field)\"),\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness \n * \n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n * \n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n * \n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n * \n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/** \n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n * \n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n * \n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n * \n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n * \n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n * \n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\"),\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n * \n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise \n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n FunctionSelector::from_signature(\"set_reject_all(bool)\"),\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"69":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext, protocol_types::constants::GENERATOR_INDEX__COMBINED_PAYLOAD,\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\nstruct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"70":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"72":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"78":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nfn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/stored_keys.nr","source":"use crate::keys::public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH};\nuse dep::protocol_types::traits::{Serialize, Deserialize};\n\n// This struct represents how public keys are stored in the key registry. We store not just the keys themselves but also\n// their hash, so that when reading in private we can perform a historical read for the hash and then show that it\n// corresponds to a preimage obtained from an unconstrained hint. We do store the keys keys regardless as they might be\n// needed during public execution, and since we need to broadcast and produce hints in some standardized way.\n// While it might seem odd to create a struct for what is effectively some data and a pure function called on it, state\n// variables rely on serializable structs in order to persist data to storage, so we must use this abstraction.\nstruct StoredKeys {\n public_keys: PublicKeys,\n hash: Field,\n}\n\nimpl StoredKeys {\n // Instances of StoredKeys are expected to only be created by calling this function so that we guarantee that the\n // hash field does indeed correspond to the hash of the keys. Ideally we'd forbid direct access to the struct, but \n // Noir doesn't yet support private members.\n fn new(public_keys: PublicKeys) -> Self {\n Self { public_keys, hash: public_keys.hash().inner }\n }\n}\n\n// Our serialization is the concatenation of the public keys serialization plush the hash, so we need one extra field.\nglobal STORED_KEYS_LENGTH: u32 = PUBLIC_KEYS_LENGTH + 1;\n\nimpl Serialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn serialize(self) -> [Field; STORED_KEYS_LENGTH] {\n // The code below is equivalent to:\n // [ ...self.public_keys.serialize(), self.hash ]\n\n let mut array = [0; STORED_KEYS_LENGTH];\n\n let serialized_keys = self.public_keys.serialize();\n for i in 0..serialized_keys.len() {\n array[i] = serialized_keys[i];\n }\n\n array[PUBLIC_KEYS_LENGTH] = self.hash;\n\n array\n }\n}\n\nimpl Deserialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn deserialize(array: [Field; STORED_KEYS_LENGTH]) -> Self {\n // The code below is equivalent to:\n // Self { public_keys: PublicKeys::deserialize(array[0 : PUBLIC_KEYS_LENGTH]), hash: array[PUBLIC_KEYS_LENGTH] }\n\n let mut serialized_keys = [0; PUBLIC_KEYS_LENGTH];\n for i in 0..serialized_keys.len() {\n serialized_keys[i] = array[i];\n }\n\n let hash = array[PUBLIC_KEYS_LENGTH];\n\n Self { public_keys: PublicKeys::deserialize(serialized_keys), hash }\n }\n}\n"},"80":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\nuse crate::keys::constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\nstruct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\ntrait ToPoint {\n fn to_point(self) -> Point;\n}\n\nstruct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nstruct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m : NpkM { inner: Point::empty() },\n ivpk_m : IvpkM { inner: Point::empty() },\n ovpk_m : OvpkM { inner: Point::empty() },\n tpk_m : TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n ( self.npk_m.inner == other.npk_m.inner ) &\n ( self.ivpk_m.inner == other.ivpk_m.inner ) &\n ( self.ovpk_m.inner == other.ovpk_m.inner ) &\n ( self.tpk_m.inner == other.tpk_m.inner )\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x:serialized[0], y:serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x:serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x:serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x:serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"82":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, point::Point, storage::map::derive_storage_slot_in_map,\n traits::is_empty\n};\nuse crate::{\n context::{PrivateContext, UnconstrainedContext},\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{\n public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH}, stored_keys::StoredKeys,\n constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}\n},\n state_vars::{\n shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter,\n public_mutable::PublicMutable, map::Map\n}\n};\n\nmod test;\n\n// This is the number of blocks that must pass after a key rotation event until the old keys are fully phased out and\n// become invalid.\nglobal KEY_REGISTRY_UPDATE_BLOCKS = 5;\n\nglobal KEY_REGISTRY_STORAGE_SLOT = 1;\n\n// A helper function since requesting nsk_app is very common\n// TODO(#6543)\npub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// Returns all current public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_current_public_keys(context: &mut PrivateContext, account: AztecAddress) -> PublicKeys {\n // We're going to perform historical reads from public storage, and so need to constrain the caller so that they\n // cannot use very old blocks when constructing proofs, and hence e.g. read very old keys. We are lax and allow\n // _any_ recent block number to be used, regardless of whether there may have been a recent key rotation. This means\n // that multiple sets of keys are valid for a while immediately after rotation, until the old keys become phased\n // out. We *must* be lax to prevent denial of service and transaction fingerprinting attacks by accounts that rotate\n // their keys frequently.\n // Note that we constrain the max block number even if the registry ends up being empty: this ensures that proof of\n // an empty registry is also fresh.\n let current_header = context.get_header();\n context.set_tx_max_block_number(current_header.global_variables.block_number as u32 + KEY_REGISTRY_UPDATE_BLOCKS);\n\n get_historical_public_keys(current_header, account)\n}\n\n// Returns historical public keys for a given account at some block determined by a block header. We read all keys at\n// once since the constraints for reading them all are actually fewer than if we read them one at a time - any read keys\n// that are not required by the caller can simply be discarded.\n// WARNING: if called with a historical header created from a fixed block this function will explicitly ignore key\n// rotation! This means that callers of this may force a user to use old keys, potentially leaking privacy (e.g. if the\n// old keys were leaked). Only call this function with a header from a fixed block if you understand the implications of\n// breaking key rotation very well.\npub fn get_historical_public_keys(historical_header: Header, account: AztecAddress) -> PublicKeys {\n // TODO: improve this so that we always hint the correct set of keys (either registry or canonical) and hash them\n // once instead of having two different hints and twice as many constraints due to the double hashing.\n\n // The key registry is the primary source of information for keys, as that's where accounts store their new keys\n // when they perform rotation. The key registry conveniently stores a hash of each user's keys, so we can read that\n // single field and then prove that we know its preimage (i.e. the current set of keys).\n let key_registry_hash = key_registry_hash_public_historical_read(historical_header, account);\n if key_registry_hash != 0 {\n let hinted_registry_public_keys = key_registry_get_stored_keys_hint(\n account,\n historical_header.global_variables.block_number as u32\n );\n assert_eq(hinted_registry_public_keys.hash().to_field(), key_registry_hash);\n\n hinted_registry_public_keys\n } else {\n // If nothing was written to the registry, we may still be able to produce the correct keys if we happen to know\n // the canonical set (i.e. the ones that are part of the account's preimage).\n let (hinted_canonical_public_keys, partial_address) = get_public_keys_and_partial_address(account);\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n }\n}\n\nfn key_registry_hash_public_historical_read(historical_header: Header, account: AztecAddress) -> Field {\n // The keys are stored in a Map that is keyed with the address of each account, so we first derive the corresponding\n // slot for this account.\n let keys_storage_slot = derive_storage_slot_in_map(KEY_REGISTRY_STORAGE_SLOT, account);\n\n // The keys are stored as [ ...serialized_keys, hash ], and since arrays get allocated sequential storage slots\n // (prior to siloing!), we simply add the length to the base slot to get the last element.\n let hash_storage_slot = keys_storage_slot + PUBLIC_KEYS_LENGTH as Field;\n\n historical_header.public_storage_historical_read(hash_storage_slot, CANONICAL_KEY_REGISTRY_ADDRESS)\n}\n\nunconstrained fn key_registry_get_stored_keys_hint(account: AztecAddress, block_number: u32) -> PublicKeys {\n // This is equivalent to the key registry contract having an unconstrained getter that we call from an oracle, but\n // PXE does not yet support that functionality so we do this manually instad. Note that this would be a *historical*\n // call!\n\n // TODO (#7524): call the unconstrained KeyRegistry.get_current_keys() function instead\n\n let context = UnconstrainedContext::at_historical(CANONICAL_KEY_REGISTRY_ADDRESS, block_number);\n let keys_storage = Map::new(\n context,\n KEY_REGISTRY_STORAGE_SLOT,\n |context, slot| { PublicMutable::new(context, slot) }\n );\n\n let stored_keys: StoredKeys = keys_storage.at(account).read();\n stored_keys.public_keys\n}\n"},"96":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n address::AztecAddress, header::Header, utils::field::full_field_less_than\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header {\n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf slot by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_data_tree_index\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_data_tree_index, \"Public data tree index doesn't match witness\");\n preimage.value\n };\n\n // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == root_from_sibling_path(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.33.0+cf5b667c9566019853a5dc2a7f16ed024ab9182b","name":"EcdsaKAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(initializer)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"7b3druM6mmX7LnFdFyL5UaLqVQ4Sjazq6kYCicxGZfYBGoV+93bECsmObdlcDlOLk+S4OSd3l2xTc8wV4jfkn//69t//49/+9//8b3/52//4+z++/ev/91/f/vr3f//zP//y979d/uu/vi3px//bP/7Xn//2/T//8c8//+c/v/3r9C/f/uNv//3y//+///Ltf/zlr//x7V9Duvzvu+P8si4/D/XJrfvRLqwHR4c1pJ9H2+Rd5mg3+RB/Hn7535b24/3sjo6/PP12uDl/Xbk/OthN2zk6Z+vtwX/6l2/LSih3oaSJUO5DcYRyH4onlPtQAqHch2KEch9KJJT7UGZCuQ9lIZT7UNjRHoTCjvY+lJUd7UEo7GgPQmFHexAKO9qDUIxQ7kNhR3sQCjvag1CUd7SLv4aS5lwoKW5rcWmZ3wpFeUdbLRTlHW2tUC7/R/5ROUiFPe1RKmxqj1JhV3uUipHKQSrsa49SYWN7lAqu9igVZO1RKtjag1Qce9ujVNjbHqXC3vYoFfa2R6kYqRykwt72KBX2tkepYG2PUkHbHqWCtz1IxbO3PUqFve1RKuxtj1Jhb3uUipHKQSrsbY9SYW97lAre9igVvO1RKnjbg1QCe9ujVNjbHqXC3vYoFfa2R6kYqRykwt72KBX2tkep4G2PUsHbHqWCtz1IxdjbHqXC3vYoFfa2R6mwtz1KxUjlIBX2tkepsLc9SgVve5QK3vYoFbztQSqRve1RKuxtj1Jhb3uUCnvbo1SMVA5SYW97lAp726NU8LZHqeBtj1LB2x6kMn/h3tbCum6p2BKF/12ZHakcpOJJ5SCVQCoHqRipHKQSSeUglZlUDlJZhFOpt195a28b1nk79HLG15U45z6efT3z2Zf39lqXqDeiLly7dbn1fsjIrTuieO3tZZD8WIv7yrXc1GV1v6zlqC1p+xvy0zzddCsdHe3jXpfgb9btj5o4r+7nwWm97aEX+9tfPHSE6QToCNMx6GTpVLt+LxE6wnTmTui4GzohR+dyy2HfKy1LyB1dk88CH2k+SZePu/JZsnws7KcZ15vTdGrz4Ju/UEfiLyeepjqJX8bYuyn2zV+du9wp29bib/4VOl6Lj/se1S8uZVdekZAnlYNU3pvavO3n6dOv5/nj2e2tZw/79dCHW/92nOK8e6aLJYy//FvxYy1RaC2z0Fre2z2FtP/LZT5k1mL7jj/6+X4lSWYlq8pK3vwRqpIree+qEmy9rsTu/qU4/gkl5yfbuuttyb2GBbe/RrpeRVP4eIlw/kvY+S8Rz3+J+fyXWM5/iXT+S6xnv4Q//sWOsi/hzn+Jwn/d0bm7lwjnv0SJv+6434Hy8Wb+ubzE0a2zuG2vfnnD1OHB8TL17f98W+bgG9Ow3mhoOxqr1ui3i8gak8tsTtf9mdfbZ14+Eowk+GaCs3SCMWyTSYwpPj942e+ur3bdmqyL1oTkp4XEvzjxROJfnPhK4l+buJu6SfwSnbueabzN/MeZumHO1PdzpnHez3S+uZF7/Hd00YD7Gd7et/rupg/Wscz7Om6c/ncpcH+G8/4nF+b5umh/GEeYNkcbgrPbg3/gCeBRxmPgUcajPboNj6efubBNPFd1FOwm6Q1PP0Nkl3j6mTgbxTPPO55bQXZ0sF+X/UMca1ozB19ukG4Hh9Xfge9n8AX8rwebbWfobV4yy0hbSexG+19O73tHfEejOh05qSMdSQ46clJH0EPddiTNO5VpfacjOCo6kuuI0ZFOOxLTfq2ZvfvjsOJRcIOCR+4NCh5tOCh4hGSv4Be/C8lltucHu5T27Nbpzl567CUtybYk4C9pyeX/cdo/S+unGN4YQAOyk0IVLRRmlEIVLRQalUJ9b9G8f2j/9qspfqNQRqEoVMlC4XLbKVSY9i+tCZPPPHPmHUcBl9sr+GLvFAhoXzqS6wiGuNuOlHqnQMAP05FMRww73GtHnt9iNCzuoOCxrYOCx4oOCt4A3yn4gu8TMJQkLcm3BH9JS74VvFdryE4KVbRQmFEKVbRQaFQK9a3gzf+Ic6VQRQuFy22pUPvvLATn35vGIi53UPC43E7Bl9u3RqMjdCTTEaQvHcl1BOVLR3IdweJ225FiUypilo7kOoJrrduRaNtPooTLq2SwF/wm3hkn2iv4Yp95mNGcdCTXEYwoHcl1BHnabUdKfS5mNjpCRzIdQZ722pHnb6ifMaKDgkdzDgoedzkoeIRkr+ALfipmwV7SknxL8Je05FvBu+4LspNCFS0UZpRCFS2UUSgKVfANIgvOlUIVLRQut51Clfwm3gWX2yv4Yu8UWNC+dCTXEQxxtx0p9U6BhB+mI7mOYId77cjzW4wJizsoeGzroOAN8GOCx172Cr7g+wQSSpKW5FuCv6Ql3wreq03ITgpVtFCYUQpVslArGpVCfSt483/FuVKoooXC5bZUqHJfyLricgcFb4DvE3zBfSval47kOoL0pSO5jqB86UiuI1jcbjtSbEpFzNKR5x0JU0eu9crGLTfPrN2RMG0kQ3D2h7Hz4sLAo4ynIw/YI56ObF2PeAw8dX8pIOxbDrPlDk9HOqtHPB2ZpDbxvPA7GwV/QyFMHekhwP9ycKlPq16uu3SEjmQ60pEeoiPndMShh7rtSKFPNAeHo6IjuY4gynrtyNOPQgaHghsUvAF+TPBow0HBIyR7BV/u88zBYS9pSb4l+Eta8q3c+yWDQ3ZSqJKF8phRClW0UGhUCvWt4Ft7Pc6VQhUtFC63nUIV/A2F4A3wnYIv9k4Bj/alI7mOYIi77Uipdwp4/DAdyXUEO9xrR57fYvRY3DHBB2zroOCxooOCx172Cr7g+wQCSpKW5FtitISWFLxXG5CdFKpooTCjFKpoodCoFOpbwZv/AedKoYoWCpfbUqGKfZV+MFzuoOBxuZ2CL7dvNbQvHcl1BOlLR3IdMTpCRzIdweJ225FSU6ohZulIriO41nZ+Z6PkN/EaTrRX8MU+82BoTjqS6UjEiNKRXEeQp912pNTnYiLylI7kOoI87bUjz99QHw3wY4JHcw4KHnc5KHiEZK/gC34qJmIvaUm+JfhLWvKt4F33GdlJoYoWCjNKoYoWCo1Kob4VfIPIjHOlUEULZRSqmUKV/CbeGZfbK/hi7xSY0b50JNcRDHG3HSn1ToEZP0xHch3BDvfakee3GBcs7qDgsa2DgseKDgoee9kr+ILvE1iMltCSbEvwl7TkW8F7tQuyk0IVLRRmlEIVLRQalUJ9K3jzf8G5UqiShUq43JYKVe4LWRMud1DwuNxOwZfbtya0Lx3JdcToCB3JdATlS0dyHcHidtuRYlMqYpaO5DrSkWtdbN47crOMS0d+nGlHEvD5ma4d2anMmXakY5b9Y0xuWdPdmXbkHzJn2tEUnTlT6+dMk23LcGm5P9OOJprMmXa0L08+Xc90vTvTjnaXmTPtaI+0zv46gN63t6M90tMztamjPVLmTDvaI2XOtJ89kr889bYMm3450/uDbZ8c43QzOMb14Nh13cOYbp73+8E/Iuxn81UtQiPCdyPsZ7t4WoTu+jYZN/mDDPvZiNbLsJ8tbr0M+9k8n/jP4TXC27tCW4T97Mq/JMLlvoWun+3+SxHGuG2YZ0u5COe4pbEut++Amt3zuwp+vibnD1dsWxY+xMzBLlxJmvOZgy/bh+1gZ+vtwT+o9zP6NEj94uu3FS/JMiDT9f5eWub3qA86Bg5OfdDJtRT1HxlaRxkuuyoym55nuIRtyct8PdQfnp8LtrvicPsOAPuIsKfRtVKEPU2ulSLsaXCtFGFPc2ulCHuaW+tE6HuaWytF2NMQWCnCniaqShH2NJ5UitCI8N0ImU7ejpDp5O0ImU7ejpDp5O0ImU7ejTAwnbwdIdPJ2xEynbwdIdPJ2xEaEb4bIdPJ2xEynbwdIdPJ2xEynbwdIdPJuxEa08nbETKdvB0h08nbETKdvB2hEeG7ETKdvB0h08nbETKdvB0h08nbETKdvBthZDp5O0Kmk7cjZDp5O0Kmk7cjNCJ8N0Kmk7cjZDp5O0Kmk7cjZDp5O0Kmk3cjnJlO3o6Q6eTtCJlO3o6Q6eTtCI0I342Q6eTtCJlO3o6Q6eTtCJlO3o6Q6eTdCBemk7cjZDp5O0Kmk7cjZDp5O0IjwncjHHQ6SXFLJS3hlwh/pDLowJFJZdAZYp23L19cV8v8uV2MyfajXZeZ6+bP7fDLJfv7Kspl0CGJjrzQkUGnQDry+Y6kQcdcOvJCRwad4+nICx0ZVFTQkRc6MqiJoSMvdMToCB3JdGRQl0ZHXujIoGaRjrzQETwrHcl1BM9KR3IdwbPSkUxHVjwrHcl1BM9KR3IdwbPSkVxH8Kx0JNcRoyN0JNMRPCsdyXUEz0pHch3Bs9KRXEfwrHQk1xE8Kx153pE44VnpSK4jeFY6kusInpWO5DqCZ6UjuY4YHaEjmY7gWelIriN4VjqS6wielY7kOoJnpSO5juBZ6UimIw7PSkdyHcGz0pFcR/CsdCTXETwrHcl1xOgIHcl0BM9KR3IdwbPSkVxH8Kx0JNcRPCsdyXUEz0pHMh3xeFY6kusInpWO5DqCZ6UjuY7gWelIriNGR+hIpiN4VjqS6wielY7kOoJnpSO5juBZ6UiuI3hWOpLpSMCz0pFcR/CsdCTXETwrHcl1BM9KR3IdMTpCRzIdwbPSkVxH8Kx0JNcRPCsdyXUEz0pHch3Bs9KRTEcMz0pHch3Bs9KRXEfwrHQk1xE8Kx3JdcToCB3JdATPSkdyHcGz0pFcR/CsdCTXETwrHcl1BM9KRzIdiXhWOpLrCJ6VjuQ6gmelI7mO4FnpSK4jRkfoSKYjeFY6kusInpWO5DqCZ6UjuY7gWelIriN4VjqS6ciMZ6UjuY7gWelIriN4VjqS6wielY7kOmJ0hI5kOoJnpSO5juBZ6UiuI3hWOpLrCJ6VjuQ6gmelI5mOLHhWOpLrCJ6VjuQ6gmelI7mO4FnpSK4jRkfoSKYjeFY6kusInpWO5DqCZ6UjuY7gWelIriN4VjqS6UjCs9KRXEfwrHQk1xE8Kx3JdQTPSkdyHTE6QkcyHcGz0pFcR/CsdCTXETwrHcl1BM9KR3IdwbPSkUxHVjwrHcl1BM9KR3IdwbPSkVxH8Kx0JNcRoyN0JNMRPCsdyXUEz0pHch3Bs9KRXEfwrHQk1xE8Kx153pF5wrPSkVxH8Kx0JNcRPCsdyXUEz0pHch0xOkJHMh3Bs9KRXEfwrHQk1xE8Kx3JdQTPSkdyHcGz0pFMRxyelY7kOoJnpSO5juBZ6UiuI3hWOpLriNEROpLpCJ6VjuQ6gmelI7mO4FnpSK4jeFY6kusInpWOZDri8ax0JNcRPCsdyXUEz0pHch3Bs9KRXEeMjtCRTEfwrHQk1xE8Kx3JdQTPSkdyHcGz0pFcR/CsdCTTkYBnpSO5juBZ6UiuI3hWOpLrCJ6VjuQ6YnSEjmQ6gmelI7mO4FnpSK4jeFY6kusInpWO5DqCZ6UjmY4YnpWO5DqCZ6UjuY7gWelIriN4VjqS64jRETqS6QielY7kOoJnpSO5juBZ6UiuI3hWOpLrCJ6VjmQ6EvGsdCTXETwrHcl1BM9KR3IdwbPSkVxHjI7QkUxH8Kx0JNcRPCsdyXUEz0pHch3Bs9KRXEfwrHQk05EZz0pHch3Bs9KRXEfwrHQk1xE8Kx3JdcToCB3JdATPSkdyHcGz0pFcR/CsdCTXETwrHcl1BM9KRzIdWfCsdCTXETwrHcl1BM9KR3IdwbPSkVxHjI7QkUxH8Kx0JNcRPCsdyXUEz0pHch3Bs9KRXEfwrHQk05GEZ6UjuY705Fnd/KAjP870q22hTWHazzT624N/rCeIrcfE1hPF1jN/+XrWZf/3w69361nE1pPE1rNqrWedxNbz1f/ym7d1X09yuX/Mw/7MIYbrwUcXWjf5bXdw+Z/XM/UxHj31dF30FOfMU6d9HZfL7s0V/+PyuXpCfD/EQIjvh2iE+JkQb7fO012IkRDfD3EmxPdDXAjxMyFeh9u0uLsQ07AhLm576osAeO/CshLiuyEu00SI74c47sTyUojPLiwXa0mI74c47sRSMEQjxM+E+GyLs0wDTyzLNUR/+9Q/chl4CHmay7BzhfNxz2W29zYiw84VJUMcdq4oGKIbdq54LcSnGxE37FxRMsRh54qSIQ47V7wW4tMtsTO2fpcQ5z9u/RyjwnEuw44Kbtmf+hLMexuRceeKgiGOO1cUDHHcueKlEJ9uRPy4c0XBEMedKwqGOO5c8VKIT7fEfuB3WC3XENMft37eyOUwF0aF41y4q3Cci/juf92f2dYpm0uI12Dseq7HH/JxYd0+z+Ls5n7Lb3wYZ/Hi+/9WYhSfABqJMYjPAK3EKD4FtBKj+BzQSozik0ArMRoxlohRfM5oJUbxsaSVGJliisTIFFMkRqaYEjEaU0yRGJliisTY1RSz3BjENOdiLPetNYt1NcXUi9EajfHH4r9+dtj1ugVntwf/WM8stp5FbD1JbD2r1nril29U5v0yaPOyPj84pm0Zs13vLLn4c+1Oee1L3P6BXeb1fu2+4bWHhtduDa89Nrz2ueG1Lw2vPTW89rXdtc/S19XM2qWvqylux6bF369d+rqaWbv0dTWzdunrambt0tfVzNqlr6uZtUtfVzNrl76uZtYufV19vvZF+rqaWbv0dXWN6eex6803ku9rl76uZtYufV3NrF36uppZu/R1NbN26etqZu3S19XM2qWvq5m1S19Xn689SV9XM2uXvq66af9hEDct6X710lfW7Oqlr63Z1UtfXbOrl76+ZlcvfYXNrl76GptdvfRVNrt66etsbvWr9JU2u/ovv9Yutv9y03LzzpMHb95o4VcTlq///Y4eQwyE+H6IRojv/mrC8vW/39FjiDMhvh/iQojv/n7H8vW/3yETYrlfTfj63+/oL8T09b/f0WOI404sxX41IU3jTiwFQxx3YikYohHiu7/fkaaBJ5Ynv1ORpoGHkKe5DDtXlPvVhDQNO1eUDHHYuaJgiG7YuaLcryYkN+xcUTLEYeeKkiEOO1eU+/2O9PW/36G49bv7nYrkGBWOcxl2VCj3qwnJjTtXFAxx3LmiYIjjzhXFfjUh+XHnioIhjjtXFAxx3Lmi2O93JD/wO6ye/O5A+vrf72gkF0aF41zER4U2vsUwefFhoZUYxceFVmIUHxgaiTGIjwytxCg+NLQSo/jY0EqM4oNDKzEaMZaIUXwsaSVGppgiMTLFFImRKaZIjF1NMbW+0j5ZV1NMvRhbnWJ+LP7rZwfv9sWvmcU7C3vycb1J3q1qJQjkWCRH+/LvmUjbwZbslxx/rCeKrWcWW8+XbwyndSubeb/erSeJrWfVWs/X/3JGZj1ObD1ebD1BbD0mtp4otp5ZbD1i/z4/+GWHuG5flejmm1vRx+tJ+452dZm3T4e075RdvNnGLAfHrnPcQlmXyWc2PSHtX0/lM1sevyzblscvyTL7o4KbqQc/RUHYZ4T94LczCPuUsB1hf13YnrC/LuxA2F8XthH214V9vFWfg9vDnqfsVtSnfSsab75U+/DomNwWS0zh5qctnDs0pdP1g3lhivbL8T/OYG7+DJYSZ7Ds7xud/ZI5g+S3P4/LdvR6bDg6NsQbpXmzimPjf/1rcpPl7z85vzfZ3fyc7uUEfgSTCOY4mJVgDoN58Js+BPPgB4MI5sGvERHMg586IpgHv6NEMEskmONgZoI5Doad74Ng2Pk+CIad73EwiZ3vg2DY+T4Ihp3vg2DY+T4IxgjmOBh2vg+CYef7IBh2vg+CYef7IBh2vsfBrOx8HwTDzvdBMOx8HwTDzvdBMEYwx8Gw830QDDvfB8Gw830QzMA733U/Rz/ZXTAD73yfBbNOA+98nwcz7s7XT/t3E3vv74IZd+ebCWbcnW8mGBs2mBD2D1wHm+6Ckd75Rre963eeYiaY4Gxbc3DpuoqP7+5dJ+md7Esn6uftnbjBH5yo9M605IlK7zRLnqj0zrHgiTrpnWDJE5Xe2ZU8UemdWskTld55lTxRG+VE+9kZZU5Uemc0718QMN98R/2jvbGbr1vjX070/mCzfWNst9vuLRXpbVS1VKT3XNVSkd6g1UrFf/lubrX9q0emm+8t+x7LjwW5igu6rOh+QV++O7rI+90GOLPcRWa2rTpxvvnFv9/8iOjqw2Dna9nzvf2U9OEZhHmzPWG5Xf/Riuzy57v9Qd7+/OdFjh2tf9q1k5+Szxwd4t7lEG/+zTn8HPj1i3q8u2Xkf/Y+ksthLjO5HOaySOcSfNj/GQi5XNzNF2Debsb5Voc/fqvD6hPYR8S+gn1A7GEC+4jYHdhHxO7BPiL2APYRsZs0dr9/Kd+lATns67L71HUJKSOJ1vXm3TqT93eOKGi7kKrRaOuQqtFoG5Gq0WhbgxOj+f7WwJu7N8Eyx8/zdv1a3M3NCZs/ctQew5vJ0bTn2lNzXJb9226nZY2Z48feI5n2IPxlPUluuvs33bSnxbrZaI9UdbOxcbNZ93eIXf73wc1pG3bw+EQ2w04en8hm2NHjE9kMPHtksxl4nshlEweeEbLZDLwvzmYz8L44m83A++JsNkY2D7NhX/w4G/bFj7NhX/w4G/bFj7NhX/wwm5l98eNs2Bc/zoZ98eNs2Bc/zsbI5mE27IsfZ8O++HE27IsfZ8O++HE27IsfZrOwL36cDfvix9mwL36cDfvix9kY2TzMhn3x42zYFz/Ohn3x42zYFz/Ohn3xw2wS++LH2bAvfpwN++LH2bAvfpyNkc3DbNgXP86GffHjbNgXP86GffHjbNgXP8xmZV/8OBv2xY+zYV/8OBv2xY+zMbJ5mA374sfZsC9+nA374sfZsC9+nA374kfZuGliY/wkHHbGT8Jha/wkHPbGT8IxwnkcDrvjJ+GwPX4SDvvjJ+GwQX4SDjvkx+E4dshPwmGH/CQcdshPwmGH/CQcI5zH4bBDfhIOO+Qn4bBDfhIOO+Qn4bBDfhyOZ4f8JBx2yE/CYYf8JBx2yE/CMcJ5HA475CfhsEN+Eg475CfhiP8c67L9IISP3494erTzyxaOs9twjp87xe33QHxKtz9jsR4cHSfbjo7TzS8ffz/6I0jxHzjVCTJMe5A3Pwx/fLRdbOx2lrc/xu6Xj9TVf1+00dSdu/5oy80voOypi/+8p07q+3NHN1nm6JDSdpZhdeGa+tHvzgRn+8Hu5ncKvf+JSPynOEdA5OftB4qCP0Ik/rOZIJrEf+ISRBdE2nMhiC6ItKdTEF0Qac/IIPr+85UgUkeEA1BHJP7DrSC6vNi4dmFdN0ThcpM1E7qt27JjmG+e+SjzaFvkMV3XvKy/YRbEf7Z1eDzjWoUm8Bh4lPGMaxOawDOuSWgCz7gWoQk84xoECTy5uWdce9ACHvGfcx4eD9ZAGg/WQBoP1kAaj4FHGQ/WQBoP1kAaD9agOJ552p54DvE5njRvh15u4l2fNm10kAY16axxO791mX6hc7CEKc17dNP1oyTejg6O15yjW28P/uCOjRiS+4zmGJM7/mRM7oiZMbljfMbkbnAfkjuOakzuyK8xuWPVxuSOrxuTO75uSO4Lvm5M7vi6Mbnj68bkjq8bk7vBfUju+LoxuePrxuSOrxuTO75uTO74uiG5J3zdmNzxdWNyx9eNyR1fNyZ3g/uQ3PF1Y3LH143JHV83Jnd83Zjc8XVDcl/xdWNyx9eNyR1fNyZ3fN2Y3A3uQ3LH143JHV83Jnd83Zjc8XVjcsfXjcjdTfi6Mbnj68bkjq8bkzu+bkzuBvchuePrxuSOrxuTO75uTO74uprcnfmwL9lShnyMy/bMMa7rc/Jhjst2fvN8XYcPRweHKW0HB2e3B3/UBL1HTfI1cdhAavKJmiAPqcknaoJrpCaXI2wHHsyW+5qgJqnJJ2pi1ISaXLqx/wBjsJtfYDw82K/L9sx+TWvmYLMdoc1LZhkp7uVwd1O5w77S1Va6ijGmq+d2dfedPk7rW13FctPVVrqKmaerp3Z18Vv//DJb5uApTNvBUwxvFZt7CRS7x2J77n5QbKFiz2kv9ureKjb3ayh2l8XmDhPFfrHYYXLhmlzmmS8I92KH1d8e/FFA7l1RwFMLWE70eqOrdLWRrnIDja620lVuoNHVc7ta7KaE5wYaXW2lq9xAo6undjWmHeHs3f1wz40uClizgIEbUhSwagG5cUQBqxaQGzwU8NQCvnLn0qW0926d7u8GBe4G0dZ22mq0lbaqtLXg+/gCN48odpfF5k4Txe6y2NyWothCxS72BtXAPSyK3WWxuTdGsV8u9h5GcP5Ne2HcG6OAVQvIvTEKeGYBC85Xxm00utpKV7mJRldb6arRVbp6aleLTezGXTG62kpXudFFVy9HRPPbwZdXydTvpS+syHyu37ghRQFPLWC5z58a95joaitd5bYRXW2kq5E7THT13K4W+6x05GYUXW2lq9yMoqundjXzocLIHSYKWLWARgEpYM0Cci+IAlYtIDd4KOCpBSz5SenI3SDa2k5buR9EW2XaWvDddpGbRxS7x2LP3Gmi2F0Wm9tSFFuo2MXeoDpzD4tid1ls7o1R7BeLXeuHV2ajq3S1ka5yx42untvVYm/Qmrk5R1db6Sq35ujqqV2tpc64i0exuyw2d/EotlCxi6mzhbt4FLvLYnMXj2K/XOyCX7W5cLeNAlYtIHfFKOCZBSw4Xy1GV+lqI13lrhhdbaWr3BWjq+d2tdzEzl0xutpKV7nRVbWry7oVyiUXfunqBx/u10jzSdx20OaDPdfmg1yW4TPNB3xwr9p8DD7SfHBs2nzwStp8cCnafPAH2nzwB9J8VvyBNh/8gTYf/IE2H/yBNh+DjzQf/IE2H/yBNh/8gTYf/IE2H/yBMh8/4Q+0+eAPtPngD7T54A+0+Rh8pPngD7T54A+0+eAPtPngD7T54A+k+Tj8gTYf/IE2H/yBNh/8gTYfg480H/yBNh/8gTYf/IE2H/yBNh/8gTQfjz/Q5oM/0OaDP9Dmgz/Q5mPwkeaDP9Dmgz/Q5oM/0OaDP9Dmgz+Q5hPwB9p88AfafPAH2nzwB9p8DD7SfPAH2nzwB9p88AfafPAH2nzwB9J8DH+gzQd/oM0Hf6DNB3+gzcfgI80Hf6DNB38gw+fg95m84Q+0+eAPtPngD6T5RPyBNh/8gTYf/IE2H/xBVT5Pfov8g4/BR5oP/kCbD/5Amw/+QJsP/kCbD/5Ams+MP9Dmgz/Q5oM/0OaDP9DmY/CR5oM/0OaDP9Dmgz/Q5oM/0OaDP5Dms+APtPngD7T54A+0+eAPtPkYfKT54A+0+eAPtPngD7T54A+0+eAPpPkk/IE2H/yBNh/8gTYf/IE2H4OPNB/8gTYf/IE2H/yBNh/8gTYf/IE0nxV/oM0Hf6DNB3+gzQd/oM3H4CPNB3+gzQd/oM0Hf6DNB3+gzQd/oMwnTPgDbT74A20++ANtPvgDbT4GH2k++ANtPvgDbT74A20++ANtPvgDaT4Of6DNB3+gzQd/oM0Hf6DNx+AjzQd/oM0Hf6DNB3+gzQd/oM0HfyDNx+MPtPngD7T54A+0+eAPtPkYfKT54A+0+eAPtPngD7T54A+0+eAPpPkE/IE2H/yBNh/8gTYf/IE2H4OPNB/8gTYf/IE2H/yBNh/8gTYf/IE0H8MfaPPBH2jzwR9o88EfaPMx+EjzwR9o88EfaPPBH2jzwR9o88EfSPOJ+ANtPvgDbT74A20++ANtPgYfaT74A20++ANtPvgDbT74A20++ANpPjP+QJsP/kCbD/5Amw/+QJuPwUeaD/5Amw/+QJsP/kCbD/5Amw/+QJrPgj/Q5oM/0OaDP9Dmgz/Q5mPwkeaDP9Dmgz/Q5oM/0OaDP9Dmgz+Q5pPwB9p88AfafPAH2nzwB9p8DD7SfPAH2nzwB9p88AfafPAH2nzwB9J8VvyBNh/8gTYf/IE2H/yBNh+DjzQf/IE2H/yBNh/8gTYf/IE2H/yBMh+b8AfafPAH2nzwB9p88AfafAw+0nzwB9p88AfafPAH2nzwB9p88AfSfBz+QJsP/kCbD/5Amw/+QJuPwUeaD/5Amw/+QJsP/kCbD/5Amw/+QJqPxx9o88EfaPPBH2jzwR9o8zH4SPPBH2jzwR9o88EfaPPBH2jzwR9I8wn4A20++ANtPvgDbT74A20+Bh9pPvgDbT74A20++ANtPvgDbT74A2k+hj/Q5oM/0OaDP9Dmgz/Q5mPwkeaDP9Dmgz/Q5oM/0OaDP9Dmgz+Q5hPxB9p88AfafPAH2nzwB9p8DD7SfPAH2nzwB9p88AfafPAH2nzwB9J8ZvyBNh/8gTYf/IE2H/yBNh+DjzQf/IE2H/yBNh/8gTYf/IE2H/yBNJ8Ff1CcT1q3PNZf+XwkjhH46sSZ8T+V+GLbwUtymcRtSvN+jpPfj/Z2dHC8BhK/v/T14A9ADPnigAxA2oAY88UBMeeLA2LQFwfEpC8OiFFfG1Bi1hcHhBoQB4RJEAeESRAHZADSBoRJEAeESRAHhEkQB4RJEAeESdAGtGISxAFhEsQBYRLEAWESxAEZgLQBYRLEAWESxAFhEsQBYRLEAWESpAHFCZMgDgiTIA4IkyAOCJMgDsgApA0IkyAOCJMgDgiTIA4IkyAOCJOgDchhEsQBYRLEAWESxAFhEsQBGYC0AWESxAFhEsQBYRLEAWESxAFhErQBeUyCOCBMwqcApf2LQpNNvwD6iHHYeT9MaXvu4KY1E+Mr30QZLW7HpuuaD7+bNThz+yLScm35hmfYaV8Dj5+3Y4M/wmPgUcYz7KTfBp5h5/w28Aw75beBZ9gZvw08w074TeAJw873beAZdrpvAw/WoDieF37RJc2707mVbmmjgzSoSWeN2xrWZfqFzslKNBjch+SO5hiTO/5kTO6ImTG5Y3zG5I5KGpK74ajG5I78GpM7Vm1M7vi6Mbkb3Ifkjq8bkzu+bkzu+LoxuePrxuSOrxuSe8TXjckdXzcmd3zdmNzxdWNyN7gPyR1fNyZ3fN2Y3PF1Y3LH143JHV83JPcZXzcmd3zdmNzxdWNyx9eNyd3gPiR3fN2Y3PF1Y3LH143JHV83Jnd83ZDcF3zdmNzxdWNyx9eNyR1fNyZ3g/uQ3PF1Y3LH143JHV83Jnd83Zjc8XVDck/4ujG54+vG5I6vG5M7vq4md2c+7Eu2lCEfL2P3toq4rs/Jhzku2/nN83UdPhwdfEljOzg4uz34oyZGTahJvibYQGryiZogD6nJJ2qCa6QmlyNsBx7MlvuaoCapySdqgsmkJt+7sf8AY7CbX2A8PNivy/bMfk1r5mCzHaHNS2YZKe7lcHdT+Yp9pautdBVjTFfP7eruO32c1re6iuWmq610FTNPV0/t6uK3/vlltszBU5i2g6cY3iq2UWyK3WOxuftBsYWKPae92Kt7q9jcr6HYXRabO0wU+8Vih8ntwCefeeYLwr3YYfW3B38UkHtXFPDUAhYUvdxAo6ttdHWeuIFGV1vpKjfQ6Oq5XS11U2KeuIFGV1vpKjfQ6OqpXY17zH727o/D/TwZBaSANQvIDSkKWLWA3DiigFULyA0eCnhqAV+5c+lS2nu3Tv6+rdwNoq3ttJX7QbRVpq3l3sc3O24eUewui82dJordZbG5LUWxhYpd6g2qs+MeFsXusthGsSn2q8XewwjOv2kvHPfGKGDVAnJvjAKeWcCS8xW30ehqK13lJhpdbaWr3EKjq+d2tdjE7rkrRldb6So3uujq5Yhofjv48iqZ+r30hRXPP9c/e25IUcBTC1ju86eee0x0tZWuGl2lq410lTtMdPXcrhb7rLTnZhRdbaWr3Iyiq6d2NfOhQs8dJgpYtYDcNqKANQsYuBdEAasWkBs8FPDUApb8pHTgbhBtbaet3A+irTJtLfhuu2AUm2L3WGzuNFHsLovNbSmKLVTsYm9QDdzDothdFpt7YxT7xWLX+uGVwG00utpIV407bnT13K4We4OWcXOOrrbSVW7N0dVTu1pJnRl38Sh2l8U2ik2xdYpdTJ0Zd/EodpfF5i4exX652AW/atO420YBqxaQu2IU8MwClpyvuCtGVxvpauSuGF1tpavcFaOr53a12MQeuStGV1vpKje6qnZ1WbdCueTCL1394GPwkebDbQdtPthzbT7IZRk+03zAB/eqzQffKM1nxrFp88ErafPBpWjzwR9o8zH4SPPBH2jzwR9o88EfaPPBH2jzwR9I81nwB9p88AfafPAH2nzwB9p8DD7SfPAH2nzwB9p88AfafPAH2nzwB9J8Ev5Amw/+QJsP/kCbD/5Am4/BR5oP/kCbD/5Amw/+QJsP/kCbD/5Ams+KP9Dmgz/Q5oM/0OaDP9DmY/CR5oM/kOFz9Pn6FX+gzQd/oM0Hf6DNB3+gzGeZ8AfafPAH2nzwB1X5PPkuyQ8++ANtPgYfaT74A20++ANtPvgDbT74A20++ANpPg5/oM0Hf6DNB3+gzQd/oM3H4CPNB3+gzQd/oM0Hf6DNB3+gzQd/IM3H4w+0+eAPtPngD7T54A+0+Rh8pPngD7T54A+0+eAPtPngD7T54A+k+QT8gTYf/IE2H/yBNh/8gTYfg480H/yBNh/8gTYf/IE2H/yBNh/8gTQfwx9o88EfaPPBH2jzwR9o8zH4SPPBH2jzwR9o88EfaPPBH2jzwR9I84n4A20++ANtPvgDbT74A20+Bh9pPvgDbT74A20++ANtPvgDbT74A2k+M/5Amw/+QJsP/kCbD/5Am4/BR5oP/kCbD/5Amw/+QJsP/kCbD/5Ams+CP9Dmgz/Q5oM/0OaDP9DmY/CR5oM/0OaDP9Dmgz/Q5oM/0OaDP5Dmk/AH2nzwB9p88AfafPAH2nwMPtJ88AfafPAH2nzwB9p88AfafPAH0nxW/IE2H/yBNh/8gTYf/IE2H4OPNB/8gTYf/IE2H/yBNh/8gTYf/IEynzThD7T54A+0+eAPtPngD7T5GHyk+eAPtPngD7T54A+0+eAPtPngD6T5OPyBNh/8gTYf/IE2H/yBNh+DjzQf/IE2H/yBNh/8gTYf/IE2H/yBNB+PP9Dmgz/Q5oM/0OaDP9DmY/CR5oM/0OaDP9Dmgz/Q5oM/0OaDP5DmE/AH2nzwB9p88AfafPAH2nwMPtJ88AfafPAH2nzwB9p88AfafPAH0nwMf6DNB3+gzQd/oM0Hf6DNx+AjzQd/oM0Hf6DNB3+gzQd/oM0HfyDNJ+IPtPngD7T54A+0+eAPtPkYfKT54A+0+eAPtPngD7T54A+0+eAPpPnM+ANtPvgDbT74A20++ANtPgYfaT74A20++ANtPvgDbT74A20++ANpPgv+QJsP/kCbD/5Amw/+QJuPwUeaD/5Amw/+QJsP/kCbD/5Amw/+QJpPwh9o88EfaPPBH2jzwR9o8zH4SPPBH2jzwR9o88EfaPPBH2jzwR9I81nxB9p88AfafPAH2nzwB9p8DD7SfPAH2nzwB9p88AfafPAH2nzwB8p81gl/oM0Hf6DNB3+gzQd/oM3H4CPNB3+gzQd/oM0Hf6DNB3+gzQd/IM3H4Q+0+eAPtPngD7T54A+0+Rh8pPngD7T54A+0+eAPtPngD7T54A+K80nrlsf6K58fiXuMwKcSX2xr+ZJcJnGb0ryf4+T3o70dHRyvgUS33h78AQglIA4IJyAOCCkgDsgApA0ILSAOCC8gDggxIA4IMyAOCDWgDShgEsQBYRLEAWESxAFhEsQBGYC0AWESxAFhEsQBYRLEAWESxAFhErQBGSZBHBAmQRwQJkEcECZBHJABSBsQJkEcECZBHBAmQRwQJkEcECZBG1DEJIgDwiSIA8IkiAPCJIgDMgBpA8IkiAPCJIgDwiSIA8IkiAPCJGgDmjEJ4oAwCeKAMAnigDAJ4oAMQNqAMAnigDAJ4oAwCeKAMAnigDAJnwKU9q+tTDb9AuhHjMu4876bp23Z3sVMjDFsB0e7/SbKcBR5iFvkc7zJzp39N7GM6wY6hDmuR+gQ5rjOoUOYBsx+YI7rMjqEOa736BDmuI6kQ5jj+pQOYY7rXvqDmTBAHcHEAHUEEwPUEUwMUEcwDZj9wMQAdQQTA9QRTAxQRzAxQB3BxAD1A3PFAHUEEwPUEUwMUEcwMUAdwTRg9gMTA9QRTAxQRzAxQB3BxAB1BBMD1AtMP00YoI5gYoA6gokB6ggmBqgjmAbMfmBigDqCiQHqCCYGqCOYGKCOYGKA+oHpMEAdwcQAdQQTA9QRTAxQRzANmP3AxAB1BBMD1BFMDFBHMDFAHcHEAPUD02OAOoKJAeoIJgaoI5gYoI5gGjD7gYkB6ggmBqgjmBigjmBigDqCiQHqB2bAAHUEEwPUEUwMUEcwMUAdwTRg9gMTA9QRTAxQRzAxQB3BxAB1BBMD1A9MwwB1BBMD1BFMDFBHMDFAHcE0YPYDEwPUEUwMUEcwMUAdwcQAdQQTA9QPzIgB6ggmBqgjmBigjmBigDqCacDsByYGqCOYGKCOYGKAOoKJAeoIJgaoH5gzBqgjmBigjmBigDqCiQHqCKYBsx+YGKCOYGKAOoKJAeoIJgaoI5gYoH5gLhigjmBigDqCiQHqCCYGqCOYBsx+YGKAOoKJAeoIJgaoI5gYoI5gYoD6gZkwQB3BxAB1BBMD1BFMDFBHMA2Y/cDEAHUEEwPUEUwMUEcwMUAdwcQA9QNzxQB1BBMD1BFMDFBHMDFAHcE0YPYDEwPUEUwMUEcwMUAdwcQAdQQTA9QNTDdhgDqCiQHqCCYGqCOYGKCOYBow+4GJAeoIJgaoI5gYoI5gYoA6gokB6gemwwB1BBMD1BFMDFBHMDFAHcE0YPYDEwPUEUwMUEcwMUAdwcQAdQQTA9QPTI8B6ggmBqgjmBigjmBigDqCacDsByYGqCOYGKCOYGKAOoKJAeoIJgaoH5gBA9QRTAxQRzAxQB3BxAB1BNOA2Q9MDFBHMDFAHcHEAHUEEwPUEUwMUD8wDQPUEUwMUEcwMUAdwcQAdQTTgNkPTAxQRzAxQB3BxAB1BBMD1BFMDFA/MCMGqCOYGKCOYGKAOoKJAeoIpgGzH5gYoI5gYoA6gokB6ggmBqgjmBigfmDOGKCOYGKAOoKJAeoIJgaoI5gGzH5gYoA6gokB6ggmBqgjmBigjmBigPqBuWCAOoKJAeoIJgaoI5gYoI5gGjD7gYkB6ggmBqgjmBigjmBigDqCiQHqB2bCAHUEEwPUEUwMUEcwMUAdwTRg9gMTA9QRTAxQRzAxQB3BxAB1BBMD1A/MFQPUEUwMUEcwMUAdwcQAdQTTgNkPTAxQRzAxQB3BxAB1BBMD1BFMDFA3MP2EAeoIJgaoI5gYoI5gYoA6gmnA7AcmBqgjmBigjmBigDqCiQHqCCYGqB+YDgPUEUwMUEcwMUAdwcQAdQTTgNkPTAzQd5jBMjDXeQN0OQGfoRltOzim66KX9XAVtuURXFqufPxPPkidunz8/sTBH/HB02jzQb1o88GmSPPxCBJtPjgPbT5oDG0+mAltPgYfaT74g/J85mkTPHOIz/mkeTs0fZdF29OmDQ/6oCqeNW4nuC7TL3hO9noeLzEoeITHoOAxKWOCDyiaQcHjfgYFj1QaFDy2alDwBvgxwePXBgWPuRsUPOZuUPCYu0HBY+7GBG+Yu0HBY+4GBY+5GxQ85m5Q8Ab4McFj7gYFj7kbFDzmblDwmLtBwWPuxgQfMXeDgsfcDQoeczcoeMzdoOAN8GOCx9wNCh5zNyh4zN2g4DF3g4LH3I0JfsbcDQoeczcoeMzdoOAxd4OCN8CPCR5zNyh4zN2g4DF3g4LH3A0KHnM3JvgFczcoeMzdoOAxd4OCx9wNCt4APyZ4zN2g4DF3VcE782Ffs6UM+hiX7ZljXNfn6MMcl+0E55uftT1ccghT2g4Ozm4P/ugJoo+efKYneEF68pmeoBHpySd6krCO9OT7wbYTD2bLfU+QlPTkMz3BadKTHz3Zf7kx2M1PNx4e7Ndle2a/pjVzsNnO0OYls4wU93a4u+E84WEpazNlNcpKWc8t6y4+fZzWt8qK76aszZQVR09Zzy3r4rfoLneELHPwFDYoforhrWZzV4Fm99ls7oPQbKVmz2lv9ureajZ3bmh2l81euddEs19tdpjcTnzymWe+MNybHVZ/e/BHA7mLRQPPbWA54btyK42yNlNWbqVR1mbKapSVsp5b1mJ3J1ZupVHWZsrKrTTKem5ZY9oZzt7dj/jc8qKBdRvIrSkaWLeB3EKigTUbGCZu9dDAcxv4yk1Ml9JevHXy93XlvhB1baiu3Bmirjp1Lfe2vjBxG4lm99lso9k0u8tmc4OKZis1u9QbVsPE3Sya3WezuUtGs19v9rp/94vz7zoM7pLRwLoN5C4ZDTy1gQWHLMcNNcraTFm5nUZZmykrN9Mo68llLTa3O+6PUdZmymqUlbJejojmt4Mvr5Lp30vfZPH88/7BcWuKBp7bwGKfSr0Qo6yUtZWycgOJsjZTVu41UdaTy1rqI9TBcVuKsrZSVs9tKcp6blkznzT03GuigXUbyA0kGli3gdwVooF1G2g0kAae2sCSH6D23Beirg3VlTtD1FWnrgXffOe5jUSz+2w295xodp/N5gYVzVZqdrE3rAbuZtHsPpvNXTKa/WqzK/08SwjcUKOszZSVe2+U9eSyFnu7VjDKSllbKSs36SjruWWtZNAC9/Nodp/N5n4ezVZqdjmDxv08mt1ns7mfR7Nfb3bBb+I07rvRwLoN5P4YDTy1gQWHLOP+GGVtpqzcH6OszZTVKCtlPbesxeZ24/4YZW2mrNzyqlvWZd0a5ZILv5T1AxB3bsQBcQNCHBAeXRtQRDPrAJrmA0BYWHFAmEdxQNg2cUAGIG1AWBVxQJgEcUCYBHFAmARxQJgEbUAzJkEcECZBHBAmQRwQJkEckAFIGxAmQRwQJkEcECZBHBAmQRwQJkEb0IJJEAeESRAHhEkQB4RJEAdkANIGhEkQB4RJEAeESRAHhEkQB4RJ0AaUMAnigDAJ4oAwCeKAMAnigAxA2oAwCeKAMAnigDAJ4oAwCTqAjj6GnzAJ2oBWTII4IEyCOCBMgjggTII4IAOQNiBMQl1AT7598gMQJkEcECZBHBAmQRwQJkEakE2YBHFAmARxQJgEcUCYBHFABiBtQJgEcUCYBHFAmARxQJgEcUCYBG1ADpMgDgiTIA4IkyAOCJMgDsgApA0IkyAOCJMgDgiTIA4IkyAOCJOgDchjEsQBYRLEAWESxAFhEsQBGYC0AWESxAFhEsQBYRLEAWESxAFhErQBBUyCOCBMgjggTII4IEyCOCADkDYgTII4IEyCOCBMgjggTII4IEyCNiDDJIgDwiSIA8IkiAPCJIgDMgBpA8IkiAPCJIgDwiSIA8IkiAPCJGgDipgEcUCYBHFAmARxQJgEcUAGIG1AmARxQJgEcUCYBHFAmARxQJgEbUAzJkEcECZBHBAmQRwQJkEckAFIGxAmQRwQJkEcECZBHBAmQRwQJkEb0IJJEAeESRAHhEkQB4RJEAdkANIGhEkQB4RJEAeESRAHhEkQB4RJ0AaUMAnigDAJ4oAwCeKAMAnigAxA2oAwCeKAMAnigDAJ4oAwCeKAMAnagFZMgjggTII4IEyCOCBMgjggA5A2IEyCOCBMgjggTII4IEyCOCBMgjSgOGESxAFhEsQBYRLEAWESxAEZgLQBYRLEAWESxAFhEsQBYRLEAWEStAE5TII4IEyCOCBMgjggTII4IAOQNiBMgjggTII4IEyCOCBMgjggTII2II9JEAeESRAHhEkQB4RJEAdkANIGhEkQB4RJEAeESRAHhEkQB4RJ0AYUMAnigDAJ4oAwCeKAMAnigAxA2oAwCeKAMAnigDAJ4oAwCeKAMAnagAyTIA4IkyAOCJMgDgiTIA7IAKQNCJMgDgiTIA4IkyAOCJMgDgiToA0oYhLEAWESxAFhEsQBYRLEARmAtAFhEsQBYRLEAWESxAFhEsQBYRK0Ac2YBHFAmARxQJgEcUCYBHFABiBtQJgEcUCYBHFAmARxQJgEcUCYBG1ACyZBHBAmQRwQJkEcECZBHJABSBsQJkEcECZBHBAmQRwQJkEcECZBG1DCJIgDwiSIA8IkiAPCJIgDMgBpA8IkiAPCJIgDwiSIA8IkiAPCJGgDWjEJ4oAwCeKAMAnigDAJ4oAMQNqAMAnigDAJ4oAwCeKAMAnigDAJ0oDmCZMgDgiTIA4IkyAOCJMgDsgApA0IkyAOCJMgDgiTIA4IkyAOCJOgDchhEsQBYRLEAWESygNK6xbI+iugj8hxA5+K/PL/uj+3t18z/wjShg0yLHuQIaVMkLbs/2DY4nJHX9a9Vd2H9Rr7nvq4g/mZqZvt67Z5uU39YCEp7om466H2E9C4g/mpgNK8r3ta3wI07mB+JqCY9nXP3t3/uzXutH1m6ovfrxbLzVke/lm4lPaw1+ng0jLuvN0KIj/uxK2CyE9hW4ifYnjnSuTHHc97pDnuLK9Dc047zdW9RXNcTdAjTRuWpl/nnea85qTPtB/tnL+VPodnOe1D2eWE/W3qBwfHayTRrfeIxhUbzSAaV200g2hcudEMonFNSDOIxjUhrSAK45qQZhCNqzeaQTSus2gG0bgiohlEBiJ1RNgFeUTYBXlE2AV5RNgFeUTYBXVEhl2QR4RdkEeEXZBHhF2QR2QgUkeEXZBHhF2QR4RdkEeEXZBHhF1QRxSxC/KIsAvyiLAL8oiwC/KIDETqiLAL8oiwC/KIsAvyiLAL8oiwC+qIZuyCPCLsgjwi7II8IuyCPCIDkToi7II8IuyCPCLsgjwi7II8IuyCOqIFuyCPCLsgjwi7II8Iu/A5RJfF7ojW6UsRGYjUEWEX5BFhF+QRYRfkEWEX5BFhF9QRJeyCPCLsgjwi7II8IuyCPCIDkToi7II8IuyCPCLsgjwi7II8IuyCOqIVuyCPCLsgjwi7II8IuyCPyECkjgi7II8IuyCPCLsgjwi7II8IuyCOaJmwC/KIsAvyiLAL8oiwC/KIDETqiLAL8oiwC/KIsAvyiLAL8oiwC+qIHHZBHhF2QR4RdkEeEXZBHpGBSB0RdkEeEXZBHhF2QR4RdkEeEXZBHZHHLsgjwi7II8IufA6R93F7bj/7L0WEXZBHZCBSR4RdkEeEXZBHhF2QR4RdkEeEXVBHFLAL8oiwC/KIsAvyiLAL8ogMROqIsAvyiLAL8oiwC/KIsAvyiLAL6ogMuyCPCLsgjwi7II8IuyCPyECkjgi7II8IuyCPCLsgjwi7II8Iu6COKGIX5BFhF+QRYRfkEWEX5BEZiNQRYRfkEWEX5BFhF+QRYRfkEWEX1BHN2AV5RNgFeUTYBXlE2AV5RAYidUTYBXlE2AV5RNgFeUTYBXlE2AV1RAt2QR4RduFziMKUtucO0TKI0rw9dUruemzyP0PHF5wQ+hq3Za/L9EvoZ/8N4Ra6wmng7AknzqIrnPiNrnDiQrrCiTfpCieOpSecCR/TFU7cTVc4sUJd4cQKdYXTwNkTTqxQVzixQl3hxAp1hRMr1BVOrFBPOFesUFc4sUJd4cQKdYUTK9QVTgNnTzixQl3hxAp1hRMr1BVOrFBXOLFCHeFME1aoK5xYoa5wYoW6wokV6gqngbMnnFihrnBihbrCiRXqCidWqCucWKGecDqsUFc4sUJd4cQKdYUTK9QVTgNnTzixQl3hxAp1hRMr1BVOrFBXOLFCPeH0WKGucGKFusKJFToBpzMf9pVYygCNcdlWEuO6Pgca5rhsy57neD04HB18XXUIzm4P/qCPRBqZvkF/YPooqpHpY7R6pm87x2C23NNHgI1MH1/WNf3994WC3fzA0OHBfl22Z/ZrWjMHm+1kbF4yy0hxZ+7ux04cHxWsW8GAl6SCv1XBXb/5OK1vVRCXSgUrVxD/SwV/p4LL/qukfpktc/AUpu3gKYa3+oqxpq8t9dXoK309va9z2vu6urf6yl0B+tpSX7mPQV9/Hjy5nePkM898IbP3Naz+9uCPXnGHhF79Tq8KCkpu01DByhXkNg0VrFtB4zYNFfytChZz5MZtGipYuYLcpqGCv1PBmHYys3d3Y65xO4VendEro1f06oRecXuCXp3RK24j0Kvf6dUrt71cSnud1un+noNxz4ESVi8hdx0o4dklLPgGK+MWBX1tqK+R+xn0taW+cvODvp7f12JvCIzcKaGvLfWVOzD0devrun9vg/NvzvHR6BW9OqFX3IGhV7/Rq5IjCTdrqGDlCnKrhgpWriA3aqjgb1Ww3OzKvRcqWLeCM7dTeq5gNL8dfHmVTKte+rx65vO/M7c96NXv9KrcJ99m7mRQwcoV5OYEFaxcQaOCVPB3Kljsw5cztzyoYOUKcsuDCv5OBTOfe5q5j0GvzugVNyfo1Rm94o4DvTqhVwu3EejV7/Sq5EcvF+45UMLqJeSuAyU8u4QF3wa1cIuCvrbUV6Ov9LWhvnLzg76e39dibwhcuFNCX1vqK3dg6OvPgyt9xf7CzRoqWLmC3Nehgr9VwWJvsUncAqKClSvIDSAq+DsVrOSGEveK6GtLfeVeEX09v6/F3FAy+kpfG+or94ro69bXgt85l7inQ6/O6BX3XujVb/Sq5EjCvRcqWLmC3HuhgnUruHLvhQr+VgWLza4r916oYOUKcjvljAou69YTl1z4pYIfsXNXoErsRuw1YsfRVokdhXl27NN8EDuGr0rsWK0qsWNyKsS+TtiLKrEzsVeJnSm1SuxMqVViN2KvETtTapXYmVKrxM6UWiV2ptQqsTOl1ojdMaVWiZ0ptUrsTKlVYmdKrRK7EXuN2JlSq8TOlFoldqbUKrEzpVaJnSm1RuyeKbVK7EypVWJnSq0SO1NqldiN2GvEzpRaJXam1CqxM6VWiZ0ptUrsTKk1Yg9MqVViZ0qtEjtTapXYmVKrxG7E/vUfkFwDU2qV2JlSq8TOlFoldqbUKrEzpdaI3ZhSq8TOlHpG7E++SeojdqbUKrEzpVaJ3Yi9RuxMqVViZ0qtEjtTapXYmVKrxM6UWiP2yJRaJXam1CqxM6VWiZ0ptUrsRuw1YmdKrRI7U2qV2JlSq8TOlFoldqbUGrHPTKlVYmdKrRI7U2qV2JlSq8RuxF4jdqbUKrEzpVaJnSm1SuxMqVViZ0qtEfvClFoldqbUKrEzpVaJnSm1SuxG7DViZ0qtEjtTapXYmVKrxM6UWiV2ptQasSem1CqxM6VWiZ0ptUrsTKlVYjdirxE7U2qV2JlSq8TOlFoldqbUKrEzpdaIfWVKrRI7U2qV2JlSq8TOlFoldiP2GrEzpVaJnSm1SuxMqVViZ0qtEjtT6tfHHqaJKbVK7EypVWJnSq0SO1NqldiN2GvEzpRaJXam1CqxM6VWiZ0ptUrsTKk1YndMqVViZ0qtEjtTapXYmVKrxG7EXiN2ptQqsTOlVomdKbVK7EypVWJnSq0Ru2dKrRI7U2qV2JlSq8TOlFoldiP2GrEzpVaJnSm1SuxMqVViZ0qtEjtTao3YA1NqldiZUqvEzpRaJXam1CqxG7HXiJ0ptUrsTKlVYmdKrRI7U2qV2JlSa8RuTKlVYmdKrRI7U2qV2JlSq8RuxF4jdqbUKrEzpVaJnSm1SuxMqVViZ0qtEXtkSq0SO1NqldiZUqvEzpRaJXYj9hqxM6VWiZ0ptUrsTKlVYmdKrRI7U2qN2Gem1CqxM6VWiZ0ptUrsTKlVYjdirxE7U2qV2JlSq8TOlFoldqbUKrEzpdaIfWFKrRI7U2qV2JlSq8TOlFoldiP2GrEzpVaJnSm1SuxMqVViZ0qtEjtTao3YE1NqldiZUqvEzpRaJXam1CqxG7HXiJ0ptUrsTKlVYmdKrRI7U2qV2JlSa8S+MqVWiZ0ptUrsTKlVYmdKrRK7EXuN2JlSq8TOlFoldqbUKrEzpVaJnSm1QuxuYkqtEjtTapXYmVKrxM6UWiV2I/YasTOlVomdKbVK7EypVWJnSq0SO1NqjdgdU2qV2JlSq8TOlFoldqbUKrEbsdeInSm1SuxMqVViZ0qtEjtTapXYmVJrxO6ZUqvEzpRaJXam1CqxM6VWid2IvUbsTKlVYmdKrRI7U2qV2JlSq8TOlFoj9sCUWiV2ptQqsTOlVomdKbVK7EbsNWJnSq0SO1NqldiZUqvEzpRaJXam1BqxG1NqldiZUqvEzpRaJXam1CqxG7HXiJ0ptUrsTKlVYmdKrRI7U2qV2JlSa8QemVKrxM6UWiV2ptQqsTOlVondiL1G7EypVWJnSq0SO1NqldiZUj8X++L3507J5WKffIjb4ZO/Cd7Ph8eH9YrJ+Wve/uhgN03bwZdx9/bgD6RMwL0hnZmuz0G6+CvSNOeQprjsz77MbyJlcu8OKVagO6QYh9eRriGD1KY072c5Xa+N3o4OjtdIoltvD/5AZCBSR4TJkEeE9ZBHhCGRR4RNkUeEHVFHtGA75BFhL+QRYSPkEWEX5BEZiNQRYRfkEWEX5BFhF+QRYRfkEWEX1BEl7II8IuyCPCLsgjwi7II8IgOROiLsgjwi7II8IuyCPCLsgjwi7II6ohW7II8IuyCPCLsgjwi7II/IQKSOCLsgjwi7II8IuyCPCLsgjwi7II7IT9gFeUTYBXlE2AV5RNgFeUQGInVE2AV5RNgFeUTYBXlE2AV5RNgFdUQOuyCPCLsgjwi78ClElyvCdrT/cWY3iD6CHNcBRLetJMQQMkGmecvxly/T/PkN394ZMX4mxjVuC1mX6ZcYz/4HY9wpvRFA487ojQAad0JvBNC483kjgMadztsA5MedzRsBNO5k3gigcefyRgAx74sDMgBpA8IkiAPCJIgDwiSIA8IkiAPCJGgDCpgEcUCYBHFAmARxQJgEcUAGIG1AmARxQJgEcUCYBHFAmARxQJgEbUCGSRAHhEkQB4RJEAeESRAHZADSBoRJEAeESRAHhEkQB4RJEAeESdAGFDEJ4oAwCeKAMAnigDAJ4oAMQNqAMAnigDAJ4oAwCeKAMAnigDAJ2oBmTII4IEyCOCBMgjggTII4IAPQZwA582F/bksZRDEuG6IY1/U5ojDHZVvIPMfrweHo4DCl7eDg7PbgD56Ih7544in64onW6IsnFqQtnraTCWbLPU+kSVc8FxxLYzz3b4gPdvMV8YcH+3XZntmvac0cbLZnbfOSWUaKO0V3NzQteCFKVbxUuCxK9bNUu+DxcVrfKhX+jVIVL5VRKkr14+DFb0Xxy2yZg6cwbQdPMbzVQCwnDazbQLwsDfydBs5pb+Dq3mogJpkG1m0g7rvfBobJ7WQmn3nmS9Z7A8Pqbw/+aApWnaaUFmYJtU+pipcKtU+pipcKtU+pSlvYhNqnVMVLZZSKUv3IOqY969m7u5EuoeBpyueagiqnKZ9rCkqbpnyuKahnmvKR9Ss3P1xKe0HW6d5TJzw1tSpfqxVTTa1er1XBt6usaG0aWLeBOHAaWLeBCHMa+DsNLPaGqdVoIA2s2kCsfc8NXPdTdP7dmRVrT1M+1xSsPU0pvllH8FOq4qVC71OqwqUKE3KfUhWe0y6zJKWiVKVLhYJvq1TR/L7qmPkEwmufGH3+eb0wocppysfBxT4FEyajVJSqdKkQ2pSqeKlw35TqZ6lKfbQqTGhySlW8VGhySvVx8PNPTFycA02hKZ9pikNo05TPNQVLTVM+1xTUM035OLjgB6uCw1NTqxNqZdSKWr1cq4JvKnFobRpYt4E4cBpYt4EIcxr4Ow0s9oYph12ngXUbiLXvt4GVvo44eAQ/pSpeKu4FUKqfpSr29gbPbQNKVbxU3DSgVFXNhjcaSAOrNpD7CzSwqtnw3F+ggXUbyP2FnhtY7huOguc+AE35XFPw9TSl9GY94OspVfFS4espVfFS4espVek5LeDrKVXxUhml+lSplnUj75ILv5TqI0hMcqEgEaKFgsTrFQoS7fV6kNN8ECRWqEyQhgkpFCTTf6EgmXgLBcmUVyhII8gyQTLZFAqSyaZQkEw2hYJksikUJJNNmSAjk02hIJlsCgXJZFMoSCabQkEaQZYJksmmUJBMNoWCZLIpFCSTTaEgmWzKBDkz2RQKksmmUJBMNoWCZLIpFKQRZJkgmWwKBclkUyhIJptCQTLZFAqSyaZMkAuTTaEgmWwKBclkUyhIJptCQRpBlgmSyaZQkEw2rwd59PGQhcmmUJBMNoWCZLIpE2RisikUJJNNoSCZbAoFyWTzuSCffJvCR5BGkGWCZLIpFCSTTaEgmWwKBclkUyhIJpsyQa5MNoWCZLIpFCSTTaEgmWwKBWkEWSZIJptCQTLZFAqSyaZQkEw2hYJksikSpE1MNoWCZLIpFCSTTaEgmWwKBWkEWSZIJptCQTLZFAqSyaZQkEw2hYJksikTpGOyKRQkk02hIJlsCgXJZFMoSCPIMkEy2RQKksmmUJBMNoWCZLIpFCSTTZkgPZNNoSCZbAoFyWRTKEgmm0JBGkGWCZLJplCQTDaFgmSyKRQkk02hIJlsygQZmGwKBclkUyhIJptCQTLZFArSCLJMkEw2hYJksikUJJNNoSCZbAoFyWRTJkhjsikUJJNNoSCZbAoFyWRTKEgjyDJBMtkUCpLJplCQTDaFgmSyKRQkk02ZICOTTaEgmWwKBclkUyhIJptCQRpBlgmSyaZQkEw2hYJksikUJJNNoSCZbMoEOTPZFAqSyaZQkEw2hYJksikUpBFkmSCZbAoFyWRTKEgmm0JBMtkUCpLJpkyQC5NNoSCZbAoFyWRTKEgmm0JBGkGWCZLJplCQTDaFgmSyKRQkk02hIJlsygSZmGwKBclkUyhIJptCQTLZFArSCLJMkEw2hYJksikUJJNNoSCZbAoFyWRTJsiVyaZQkEw2hYJksikUJJNNoSCNIMsEyWRTKEgmm0JBMtkUCpLJplCQTDZFgowTk02hIJlsCgXJZFMoSCabQkEaQZYJksmmUJBMNoWCZLIpFCSTTaEgmWzKBOmYbAoFyWRTKEgmm0JBMtkUCtIIskyQTDaFgmSyKRQkk02hIJlsCgXJZFMmSM9kUyhIJptCQTLZFAqSyaZQkEaQZYJksikUJJNNoSCZbAoFyWRTKEgmmzJBBiabQkEy2RQKksmmUJBMNoWCNIIsEySTTaEgmWwKBclkUyhIJptCQTLZlAnSmGwKBclkUyhIJptCQTLZFArSCLJMkEw2hYJksikUJJNNoSCZbAoFyWRTJsjIZFMoSCabQkEy2RQKksmmUJBGkGWCZLIpFCSTTaEgmWwKBclkUyhIJpsyQc5MNoWCZLIpFCSTTaEgmWwKBWkEWSZIJptCQTLZFAqSyaZQkEw2hYJksikT5MJkUyhIJptCQTLZFAqSyaZQkEaQZYJksikUJJNNoSCZbAoFyWRTKEgmmzJBJiabQkEy2RQKksmmUJBMNoWCNIIsEySTTaEgmWwKBclkUyhIJptCQTLZlAlyZbIpFCSTTaEgmWwKBclkUyhII8gyQTLZFAqSyaZQkEw2hYJksikUJJNNkSDnqafJxuI1yLRmjl7D9PPgdfb7sX52P4PRnlSiX/Zgos82LC3byV7+d1puWuMOY5983J4+TNF+Of4jHu35o3o82lPFa/GE65Nf/ndcDk7Xjk53y3TKnOgSt6dflpt/0Ozo2Mu90S36y00pX4BUbHfp85ctfbHt4Lhc/oV8vnS3hP2is8S4Hx1/Lntpc9mpzWWvTS77+BfEpZd9+d//9p9/+etf//I//9tf//7vf/7nX/7+t398f+T0/f9z/AOMl4vAtk5/88px/h7C8U8NPn+Ie/0h/vWHhBcfcvkv9/3I459hmle/PXC+2eLZjyYc/+DQ84ek1x+yvvyQ459Lef4Q9/pDDumk/Xqc3P1DwusPsdcfEl9/yPz6Q5bXH5Jef8gh/eueMC3rHx9y/JXSzx/iXn+If/0h4fWH2OsPia8/5Jh+SttD1uXuIcvrD0mvP2R9+SHHX7v3/CHu9Yf41x9ySH/djcHq78p//PVYzx8SX3/I/PpDltcfkl5/yPryQ46/muT2IXdcjr+E4/lD/OsPOaZvu+ewu7/K468QeP6Q+PpD5tcfsrz+kPT6Q9aXH3L88c113gZqN1n85TH/8srB31/Anf0C/uwXCGe/gJ39AvHsF5jPfoHl7BdIZ7/AevILpLP/ktPZf8np7L/kdPZfcjr7Lzmd/Zeczv5LTmf/Jaez/5LT2X/J69l/yevZf8nr+38HcVl2u3zdtYRp+fH88eTnf79Dl1uRPw++iO2751/PfX43TWe/gDv7BV69GHx/kEvn9sK59eQX8NPZL+DOfoH3r+Kz26T07MP9C4SzX8DOfoF49gvMZ7/AUuDPf91fwO5fIJ39AuvJLxCms1/Anf0C/uwXCCdfRIKd/QLx7BeYz36B5ewXSGe/wNmbKTt7M2Vnb6bMn/0CZ/8l29l/yXb2X7Kd/ZdsZ/8l29l/yXb2X3I8+y85nv2XHM/+S46n/iVf/st/P/L4jeMxbjcDXVyu7+79vv+8OzjtbydMy/z8UPPr/m7CMF0nlsuO5HLGq85Sjt8lVGktTmgtXmgtQWgtdt5afvxb8PbTr257N9Dq41unOgutZRFaSxJay6qzFj8JrcWdt5Y/PXrLY7mnD+c+vZ379PHcp5/Pffrl3KdP5z79eurTh+ncp3+/mJe7JLZvm28s6s8XiGe/wPt4L6p63/j7xf/hBcyffAYWzn6BsyHbUuAF0v5xrunmTZI/XyCd/QLryS8Qp7NfwJ39AiX+DhZ/fYH0xxcIZ7+Anf0C8ewXmM9+geXsF0hnv8B68gvM09kv4M5+gQJ/yW7/oKO7+MA/vkA4+wXs7BeIZ7/AfPYLLGe/QDr7BdaTX2CZzn6BAn/JLu2fXXTr+scX8Ge/QDj7BeaTt+/LcvYLnD2ALOvJL5D82S8Qzn4BO/sF4tkvcO7fweU/wvdDD7u67I9bknv+GjZt6zGfOTT4OP88NvyyHCtz90p+1cc3uvSX7dpctm9z2aHNZdtZy/7To1tyrzx53HYcdvMdLD+ffD7zyZcznzyd+eTriU/u3/6XMG3jrKU/ykfvznxyf+aThzOf/N2/0Djtb4Cf/mgQfDzzyeczn3w588nTiU8e3q1i9Nu//tHfPXk488nfBTqH/Q3W8Y8b57Cc+OR2Ziz29l+o7W2Jdzc04plPPp/55MuZT57OfPL1xCeP05lP7s58cn/mk4czn7zgX+j8xzeexXjmk7//F7r/w3X3lrn49l/o/k/uwZOnM598PfHJ53f/Qudp/zTa9EdPOrszn9yf+eThzCe3M5/87b/Qdbs5MN98g5l/cgOo1JMvZz55OvPJ1xOffJnOfHJ35pP7M588nPnkVvDJ7+4exTOf/P2/0O09U7O/e/K3/0LT/PjJ05lPvp745Onta+iTaS65M5/cn/nk4cwntzOfPJ755GeKhXSeWLj8h30/8MEvi9j+loJ5znx0xpnb/pic+T+ewoOPN732Are/z5A5+OzPQjWw8NDqwq3VhcdWFz63uvBFZOF/evjJsNPWcvbHyPQX/uAzZw0s3LW6cN/qwkOrCzeRhf/p4Wf76qxlFlrLIrQWlavQnx5+HrHKWoLKteJPj37Io9JaVP5F/9OjO/+V1vLFf9O/9cnSSquxL+5v5kOxJpVNlFrNLLWa9atX8xsfg621Gie1Gi+1miC1mi//9+Y3PudbazWz1GoWqdUkqdWsSquZJ6nVOKnVeKnVBKnVfPW/xb/zSe1aq5mlVrNIrSZJrWZVWs0ySa3GSa3GS63mq/8tfv7xeZNaTZRaTVIyJsuqtJo0Sa1Gym0lk1pNlFrNLLWaRWo1Qv/eXP4jfj/0we/Ru90Yzm69Wvh0vCZ/fYuZ3fyy7nT8tej7G2r9df0uro9vwb+4mnmXnbYsudXsTmmZprvVHO4r5nB9e6pN7vlqVrcRWOebtcz+aOVx91u3I9X3X6u9f97o97sk8fZ9hrM7PHr/7dvbZ14e34Pv7SRthJOMI5zkPMJJLiOcZBrhJNcBTvL4XRy9naQb4SRH2PGE93c8brIb/71mTnMO+3cZzcEyT73sxy43b3+5DAk/lm7tLj22u/S53aUv7S49tbv0tdml29Tu0l27S/ftLr3dq6m1ezW1dq+m1u7V1Nq9mlq7V1Nr92oa272axnavprHdq2ls92oa272axnavprHdq2ls92oa272axnavpnO7V9O53avp3O7VdG73ajq3ezWd272azu1eTed2r6Zzu1fTud2r6dLu1XRp92q6tHs1Xdq9mi7tXk2Xdq+mS7tX06Xdq+nS7tV0afdqmtq9mqZ2r6ap3atpavdqmtq9mqZ2r6ap3atpavdqmtq9mqZ2r6Zru1fTtd2r6dru1XRt92q6tns1Xdu9mq7tXk3Xdq+ma7tX07Xdq6mb2r2cuqnd66mb2r2guqndK+rldRtee7vXVDe1e1F1U7tXVTe1e1m9vFi7a3cNX1ddw9dV1/B11TV8XXUNX1ddw9dV1/B11TV8XXUNX1ddw9dV3/B11Td8XfUNX1d9w9fVAl9PVW/tDV9XfcPXVd/wddU3fF31DV9XQ8PX1dDwdTU0fF1t+NuSXMNfl+Qa/r4k1/AXJrmGvzHJNfyVSa7h70xyDX9pkmv4W5Ncw1+b5Br+3iTX8BcnuYa/Ock1/NVJruHvTnINf3mSa/jbk1zDX5/kGv7+JNfwFyi5hr9ByTX8FUqu4e9Qcg1/iZJr+FuUXMNfo+Qa/h4l1/AXKbmGv0nJNfxVSq7h71JyDX+Zkmv425Rcw1+n5Br+PiXX8BcquYa/Uck1/JVKruHvVHINf6mSa/hblVzDX6vkGv5eJfeJL1ZyMbP2GPdfHY1p+uUl7o/2bv/ZUe9S7ic+3Rrc9tzrbS4PfoJzP9WbVNzhj0DZvD2xJf/LsT9iWQaNJaSth3FK97EkYjmKZSWWg1g+8UVWQ8biiOUoFk8sR7EEYjmKxYjlKJZILEexjLrLzcTCLvcwFna5h7Gwyz2KZe1ql7uEPRb/Xixfv8s122NZY+ZEfZi2n3W+/M8bhTJ9rN43vfrQ9Oqt6dXHplc/N736penVp6ZXvza8ej9NTa++5Wutn1q+1vqp5Wutn1q+1vqp5Wutn1q+1vqp5Wutn1q+1vqp6Wuta/pa65q+1jr1f++vR4c53q1e/d/756sX/zfHbBNF3ub5bvXi/+Y8X70X/zcns3rxf3Myqxff39u6bEfHsNyu/sB5BretOgR/tanJfZyq+DBQ8lTFryQlT1X8slPyVMVnkpKnKj7AlDxV9Z1HwVNV36a8dKoh7Kdq8x9PNajvaQqeqvoGqOCpdrVben6qXe2Wnp+qjXOqXe2Wnp9qV7ul/QMRISx2d6pd7Zaen2pXu6Xnp9rVbunpqVpXu6Xnp9rVbun5qXa1W3p+ql3tlm5O9ebjd9up2jin2tVu6fmp9rRbsuvG0O43htbTbilzqj3tljKn2tNu6fmpxp52S5lT7Wm3lDnVnnZLmVPtabdkcb+u2ny3MfzEVz12c6o97ZYyp9rVbun5qXa1W3p+ql3tlp6fale7paenOne1W1rW/VTXuyFu7mq39PxUu9otPT/VrnZLz0/VxjnVrnZLz0+1q93S81Ptard0PdU4TXen2tVu6fmpdrVbenqqS0+7pXjdGMb7jeHS024pc6o97ZYyp9rTbilzqjbOqfa0W8qcak+7pcyp9rRbivP1unp/f3XpabeUOdWedkvPTzV1tVt6fqpd7Zaen2pXu6Xnp9rVbun5qVpPp7ofHGZ3N8SlrnZLz0+1q93S81Ptarf0/FS72i09P9WudktPT3Xtarf0/FS72i3dnmq6O9WudkvPT7Wr3dLzU7WOTnWer6ea7v9We9otZU61p91S5lR72i1lTrWn3VLmVHvaLT091aD+raclT7Wn3dKc4n6q63p3qj3tljKn2tNuKXOqNs6pdrVben6qXe2Wnp9qV7ul56fa025pcdtTh8Wnu1Ptabf0/FTVv7e25Kn2tFvKnGpPu6XMqfa0W8qcqo1zqj3tlm5PNcx3p9rTbilzqj3tlp6fqvoXmzz9Vu+g/l0lmdW3/I3qQf0bRTKrV/8Tn67f6j2td6tXn3Ger159bHm6evlv53i+evXh4vnq1eeF56tXv9am66+XrOlu9erX2uerV7/WPl+9+rX2+erVf63q+erVf63q+erVf63q6erVv9shs3r1X6t6vnr1X4Z8vvqmr7Xq35OQWX3T11r1bzPIrL7pa636dw5kVt/0tVb9mwEyq2/6Wqv++f3M6tu91l7+Y/5+6PEPLJrzPx9oc7i+Sgw/3qs4vf4Q9/pD/OsPCS8+5PJfy48QDq/bcdmcxjz7mwfGHw9MPx54fF470uiuv4XqbP6+yOM7v88fEl5/iL3+kPj6Q+bXH3J4mY5uu68TY/rlIQd/MdOy/Xm5Kd38DazrjxdIZ7/AevILHP99lXwBd/YL+LNfIJz9Avb+C6zT/gI3b9baXiCe/QLz2S+wnP0C6ewXWE9+gTCd/QLv/yW7/S65cz7cvYA/+wXC2S9gZ79APPsF5rNfYDn7BVLRFwju7gXWk1/AprNfoMBfcry+wHzHwPzZLxDOfgE7+wXi2S8wn/0Cy6kvcPmv9fuxh6fh521D5ZebC1X8GDa/v435v77F4y8FCKvbR7SbrZj5y0Mv//n///k///Lnf/vrf/zj8pDv/9f//bd//+df/v63n//5z//zvz7+L5eD/x8="},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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Bs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oJs0oJs0oJs0oJs0o5gVL6qQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaIZxaIZxaIZxaIZxbpgSV00o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o9g0o9g0o9g0o9g0o9gXLKmbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSHZhSHZhSHZhSHZhTngiX10Izi0Izi0Izi0Izi0Izi0IzifLhRtGvi+4NNpG48tV+d3x/t8sNTq7/34Ljk5cEh8+OD/2hV97Rqe1r1Pa3GnlZzT6u1p9Xe0+qsafXDNe8ntrpnWtI905LumZY+XE1/Yqt7piXdMy3pnmlJ90xLumdasj3Tku2ZlmzPtGR7pqUP31zwia3umZZsz7Rke6Yl2zMt2Z5pyfdMS75nWvI905LvmZY+fHvIJ7a6Z1ryPdOS75mWfM+05HumpdgzLcWeaSn2TEuxZ1r68A0+n9jqnmkp9kxLsWdaij3TUuyZlj58u5NJvfwW285f86en/qOgD59p1F4ebGbXzwV9+ORh/lZQ1s8F3WM+KPHXgmx+XZBUXa8PnreCyt5tNV8fnBVvdZx/e39U71+6+vjS1edHV9/RLw+ey25UP6Xz+ujyfH24iLzzeLVLX1Lz/Dn8T4//o99a1m8v63d29XuXBV+/sd+Ol/jR68rr5/rlg+vXU/XLU6vljfqj217jU653zl+/eP2Grj/F9a3+H5zea/3+xeuPL15/fvH6l80DtWweqGXzQMPngbv3K8v61WX92rJ+fVm/sazfZddbetl81R8+X5W9TrgV8mO/f9QzrHrmgtUDv/5Q18u/t/PnlJ/+vX38qsXUl/++NCNuPLW2vDz1t407b+X/xbdY81K2i75d2f7jzz89ek6X3x89qvEv/6f78UsiH/co/XmU9zpK9gWimxcYh32B6Hb99cXrhw0kwxpIzl/GmkjOXybP8LxPeJ5zeo5H9zvL53x0v7P0VR+LTzO7rvOcZnZd6DnN7LrSc5rZ9VXaaWbXd2lyCW00FKUVZLSC/EtfzzsNBO1Ev/YH+NNAPefWe82tH76p9pHPcr74f1h6ffUGBJa1Sns7vcte1LsWRP8c2a9PPe3XO//mknaiz7fHu0W6Pt8e73eWH/9Fwf1clVx2fe3y5WuXv+tnkqfhXb+TPA37toa3XUE3+BX0G7TtNIC+Iq6n5rcG0q4br5hkv1GaeaskvjeLvhp+72bRV8Lv3KyjScm9m0V7kns3i56S/ulmy+ztg2781Cx6Qrp3s76pWfRkdO9m0VPRvZt9rAnqRrOPNUHdaPaxJqhfNxuPNUHdaPaxJqgbzW6aoGLTBHWXPaRfptlNE1RsmqBi0wQVmyao2DRB5aYJKjdNULlpgspNE9THr3X9zGY3TVDspbH3bnbTBMVeF3vvZjdNUOxFsfdudtMEVZsmqNo0QX34cttPbXbTBFWbJij2jt17N7tpgmJv171zs+zVuvdudtMExV6qe+9mN01Q7HW692520wTFXqR772Y3TVC9aYLqTRPUbJqgZtMENZsmqNk0Qd1lle+XaXbTBDWbJqjZNEHNpglqFk1Qci2aoORaNEHJtWiCkmvRBCWXb2p20QQl7B2/92520QQl7N2+92520wQlmyYo2TRByaYJSjZNUB++1PlTm900QcmmCUo2TVCyaYKSTROUbpqgdNMEpZsmKN00QX38Hu/PbHbTBKWbJijdNEHppglKN01QtmmCsk0TFHvv+L2b3TRBsfeN37vZTRMUe8/4vZvdNEE92E7yG81umqAebCf5jWY3TVCbdpLLpp3ksmknuWzaSS6bdpLLo+0kr9c7RFT/3OyDTVC/bvbBJqhfNhtf/Oat8uF7xu/egKIbyDOKvTWQ804D9tUb8K/eQHz1Btg3l69LfrgXq/etyP3l7Zbkw3dxf2qzvalZ9q3c79tssieHOzfLnjL+2WZ//dEm2RPJnZtlTy93btY3Ncueiu7c7GNNUDeafawJ6kazjzVB3Wj2sSaoXzdbjzVB3Wh20wRVmyao2jRBffgu7k9tdtMEVZsmqNo0QdWmCao2TVC9aYLqTRNUb5qgetME9eG7uD+12U0TVG+aoHrTBNWbJqjeNEHNpglqNk1Qs2mCmk0T1Ifv4v7UZjdNULNpgppNE9RsmqBm0QSl16IJSq9FE5ReiyYovRZNUHr5pmYXTVB6LZqg9Fo0Qem1aILSa9MEJZsmKNk0QcmmCUo2TVAfvov7U5vdNEHJpglKNk1QsmmCkk0TlG6aoHTTBKWbJijdNEF9+C7uT2120wSlmyYo3TRB6aYJSjdNULZpgrJNE5RtmqBs0wT14bu4P7XZTROUbZqgbNMEZZsmKNs0QfmmCco3TVC+aYLyTRPUh+/i/tRmH2yC+tVeX/UHm6B+3eyDTVC/bha9i1umdF4fXZ43mj0XXjReCrcrfl6QrOx93L+h4UDf1eR3NIy+s8nvaBh9d5Pf0TD6Die/o2Hf1jD6Tie/o2H03U5+R8PoO578joa3TVofvr/8jLrX64Onfmz4j4I+fMf4zYKEVpDSCjJaQU4r6MPfKcvePlCG/FxQ0goqWkFNK2hgBdVFK0hoBSmtIKMV5LSCAvbWUUkrqGgFNa0g9nfAUdfLh4Lz55SfPxTAd6z+Aw3A7xB4uwH296//QAPs71T/gQYclipNe2dq2jtT096ZmvbO1LSrPXfZRZnxw3eteiMmUl+ut51P5XHjqc8byctTn//+3q7OybuP9mteyvYzBbw9+tuff3r0nC6/P3pU42//8qW8u6y6fJ7l389Sn2d5t7O051ne7Sz9eZZ3O8t4nuXdzjKfZ3m3s6znWd7tLPt5lnc7y3me5Z3O0i7Yt9x2wb7lNvgm1uh+/eF5yvXeSwy/Ana7Af/qDbB//f8PNMD+Rf8/0AD7V/r/QANsu/gPNAD/LupmA/BNof9AA/Dvom43APu9mQns92b24ZsxbxYE+67IBPZdkQnsuyIT2HdFJrDvikxpn5mU9plJaUmttKRWWlIrLamVltRKS2qlJbXSktpoSW20pDZaUhstqY2W1EZLaqMltdGS2mhJbbSkdlpSOy2pnZbUTktqpyW105LaaUnttKR2WlI7LamDltRBS+qgJXXQkjpoSR20pA5aUgctqYOW1LQNFkbbYGG0DRZG22BhtA0WRttgYUlL6qQlddKSOmlJnbSkLlpSFy2pi5bURUvqoiU1bYOF0TZYGG2DhdE2WFjRkrppSd20pG5aUjctqWkbHYy20cFoGx2MttHBaBsdjLbRwYaW1ENL6qEl9dCSemhJPbSkHlpSDy2ph5bU81D3tIhy+f7wd/dn+fVQd7S43e5D3c/idrsPdTeL2+0+1L0sbrfru9p9qPtY3G73oe5icbvdh7qHxe12H+oOFrfb3TVVCezTtQvs07XTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLLTtLIPLKmDdsfcoN0xNy5YUscFS+q4YEkdFyyp44IldVywpI4LltRx0ZKaZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSTZhSTZhSTZhSTZhTzgiV10oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0Yxi0Yxi0Yxi0YxiXbCkLppRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRbJpRbJpRbJpRbJpR7AuW1E0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zikMzikMzikMzikMzinPBknpoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFgRlEvmFE8BbGS+hTESupTECupT0GspD4FsZL6FMRK6lMQK6lPQaykPgXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXR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nWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUg2YUg2YUg2YUg2YU44IlddCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtKMYtKMYtKMYtKMYl6wpE6aUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUSyaUSyaUSyaUSyaUawLltRFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pF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oxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFpxlFpxlFpxlFpxlFv2BJ7TSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSjGDSjGDSjGDSjGDSjGBcsqYNmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFJNmFJNmFJNmFJNmFPOCJXXSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLSjGLRjGLRjGLRjGLRjGJdsKQumlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlEsmlFsmlFsmlFsmlFsmlHsC5bUTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKTTOKQzOKQzOKQzOKQzOKc8GSemhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWhGcWBGMS6YUTwFsZL6FMRK6lMQK6lPQaykPgWxkvoUxErqUxArqU9BrKQ+BdGSGmYUT0G0pIYZxVMQLak/3CjqZf7y1FfNjwW99+C8rtdHp71VIiLvVlIvdUt1vD46vjcbm5rNTc3WpmZ7U7OzqNkPt6yf2qxsalY3NWubmnVys2fo03kbAD1vNKt2abw8u13hf3r83xtGT1G/o2H0JPU7GkZPU7+jYfRE9TsaRk9Vv6Hh+9hz8dc3ApsbH7zL3t41Qt4ebN8LElpBSivIPrygul4fPPVzQU4rKGgFJe3fUNEKalpBAyvIaUnttKR2WlK70QpyWkG0pPakFVS0gppW0Ecntcq8XidRyx8LeueZo66XGfz8OeXnGTyur96AfPUG9Ks3QHunuY+dv2dBQSso2f/muu3lqVOudy4dRH31BvqrN3CPd76M16tVdd26WpXaL0+dETeeWltenlo73n5jIe8+2q95KdtF397m//jzT4+e0+X3R49q/O1fvhB2lzUEz7P8+1nK8yzvdpb6PMu7naU9z/JuZ+nPs7zbWcYXH0Tyq8+y+dVn2fzqs2zCr+LcbKDgV3FuNyCwC3ultIJo37zeZ5vKPQuiXc8v2vX8ol3PL9r1/BpYQX3RCqIlddOSumlJ3bSkblpSNy2pm5bUTUvqpiX10JJ6aEk9tKQeWlIPLamHltRDS+qhJfXQknpgSS0XLKnlgiW1XLCklguW1OciFq0gWFLLBUtquWBJLRcsqeWiJbXQklpoSS20pBZaUgstqYWW1EJLaqEltdCSWmhJrbSkVlpSKy2plZbUSktqpSW10pJaaUmttKRWWlIbLamNltRGS2qauheauheauhejJbXRktpoSW20pHZaUjstqZ2W1E5LaqclNU3dC03dC03dC03di9OSOmhJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKROWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqYuW1DSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKDSjKPcxivm6EObH2ze9X1Dma0FZPyzfkvleUeAqSlxFhauocRUNrCKl3fddafd9V9p935V233e9nFYQ7L7vSrvvu9Lu+660+74r7b7vSrvvu9Lu+660+74r7b7vKrSkFlpSCy2phZbUQktqoSW10pJaaUmttKRWWlIrLamVltRKS2qlJbXSklppSW20pDZaUhstqY2W1EZLaqMltdGS2mhJbbSkNlpSOy2pnZbUTktqpyW105LaaUnttKR2WlI7LamdltRBS+qgJXXQkjpoSR20pA5aUgctqYOW1EFL6qAlddKSOmlJnbSkTlpSJy2pk5bUSUvqpCV10pI6aUldtKQuWlIXLamLltRFS+qiJXXRkrpoSV20pC5aUjctqZuW1E1L6qYlddOSumlJ3bSkblpSNy2pm5bUQ0vqoSX10JJ6aEk9tKQeWlIPLamHltRDS+qBJbXRjKLRjKLRjKLRjKJdsKQ2mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlF0mlF0mlF0mlF0mlH0C5bUTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKQTOKQTOKQTOKQTOKccGSOmhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWlGMWlGMWlGMWlGMS9YUifNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKBbNKBbNKBbNKBbNKNYFS+qiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWi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aUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUbRaEbRaEbRaEbRaEbRLlhSG80oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oOs0oOs0oOs0oOs0o+gVLaqcZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZxaAZxaAZxaAZxaAZxbhgSR00oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0o5g0o5g0o5g0o5g0o5gXLKmTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSLZhSLZhSLZhSLZhTrgiV10Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi04xi04xi04xi04xiX7CkbppRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRHJpRHJpRHJpRHJpRnAuW1EMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzigMzin3BjOIpiJXUpyBWUp+CWEl9CmIl9SmIldSnIFZSn4JYSX0KYiX1KYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqCJbXQjKLQjKLQjKLQjKJcsKQWmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlFUmlFUmlFUmlFUmlHUC5bUSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKRjOKRjOKRjOKRjOKdsGS2mhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WlG0WlG0WlG0WlG0S9YUjvNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKAbNKAbNKAbNKAbNKMYFS+qgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWkGcWkGcWkGcWkGcW8YEmdNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOY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jKLSjKLSjKLSjKLSjKJesKRWmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlFUmlE0mlE0mlE0mlE0mlG0C5bURjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKRjOKTjOKTjOKTjOKTjOKfsGS2mlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlG0WlGMWhGMWhGMWhGMWhGMS5YUgfNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKAbNKCbNKCbNKCbNKCbNKOYFS+qkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWkGcWiGcWiGcWiGcWiGcW6YEldNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKNYNKPYNKPYNKPYNKPYNKPYFyypm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUm2YUh2YUh2YUh2YUh2YU54Il9dCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4tCM4ny4UdTL/OWpr5ofC3rvwXldr49Oe6tERN6tpF7qlup4fXR8bzY3NVubmu1Nzc6iZj/cm35qs6B39HcenPnSq2S9FW8y38sHvf//R8oHTQv/kfKd/F/KaVDnrVnPG/+lqF0aL89uV/ifHv/3htGzy+9oGD2//I6G0TPM72gYPcfIt/UPr48+b33vNPBYs0m+1i0587+/XedjzSY3mpVNzeqmZm1Ts/5YnyfMXj9PxE+fJ/LBru78utkHu7rz62Yf7OrOr5t9sKs7v272wa7u/LLZerCrO79u9rEmqBvNPtYEdaPZx5qgbjTrm5rdNEHVpgmqNk1QtWmCqk0TVG+aoHrTBNWbJqjeNEF9+AaYT2120wTVmyao3jRB9aYJqjdNULNpgppNE9RsmqBm0wT14ZuZPrXZTRPUbJqgZtMENZsmqNkzQZ1Grj0j1Ldu98xQ37rdM0R963bPFPWtW1/V7Z456lu3ewapb93umaS+dbtnlPrW7apZSlbNUrJqlpJVs5SsmqU+fLHh53a7apaSVbOUrJqlZNUsJatmKV01S+mqWUpXzVK6apb68NWjn9vtqllKV81SumqW0lWzlK6apWzVLGWrZilbNUvZqlnqw5cDf263q2YpWzVL2apZylbNUrZqlvJVs5SvmqV81Szlq2apD1/f/bndrpqlHm05+I1uV81Sj7Ye/Ea3q2apR1sQfqPbVbNUrJqlYtUsxV5XfvduV81S7EXld+921SzFXlF+925XzVIPttD8VrerZqkHW2l+q9tVs9Sipebful01Sy1aa/6t21Wz1KLF5t+6XTVLLVpt/q3bVbPUouXm37pdNUstWm/+rdtVs9SiBefful01Sy1acf6t21Wz1KIl59+6XTVLLVpz/q3bVbPUokXn37pdNUstWnX+rdtVs9SiZefful01Sy1ad/6t21Wz1KKF59+6XTVLLVp5/q3bVbPUoqXn37pdNUstWnv+rdtNs5Ss2nsuq/aey6q957Jq77lcvqrbTbOUrNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nsuqveeyau+5rNp7Lqv2nuuqvee6au+5rtp7rqv2nuvlq7rdNEvpqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua7ae66r9p7rqr3numrvua3ae26r9p7bqr3n9mh7z0tfu+13uvVV3X74LGWZL0/tor/uVqL79Z9myuV/6vZ7B/nlOyh0Bymubx3kvNdBf/kO5qt38PG7we/egaA7qEten7ou71vJm/3W8MxPyfvx+74/tVtb1a2v6pY9Q9y7W/a88c92e2P2F/Zscu9u2XPMvbtlzzx37lbZ89G9u32sWepWt481S93q9rFmqVvd+qpuH2uWutXtqllKV81SumqW0lWzlK2apWzVLGWrZilbNUt9/L7vT+121Sxlq2YpWzVL2apZylbNUr5qlvJVs5SvmqV81Sz18fu+P7XbVbOUr5qlfNUs5atmKV81S8WqWSpWzVKxapaKVbPUx+/7/tRuV81SsWqWilWzVKyapWLVLJWrZqlcNUvlqlkqV81SH7/v+1O7XTVL5apZKlfNUrlqlspVs1StmqVq1SxVq2apWjVLffy+70/tdtUsVatmqVo1S9WqWapWzVK9apbqVbNUr5qletUs9fH7vj+121WzVK+apXrVLNWrZqleNUvNqllqVs1Ss2qWmlWz1Mfv+/7UblfNUrNqlppVs9SsmqVm0yzl16ZZyq9Ns5Rfm2YpvzbNUn75qm43zVIO3w1+7243zVIO3zl+725XzVLwXeb37nbVLPVge89vdbtqlnqwvee3ul01S63ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77qr3nvmrvua/ae+6r9p77o+09L319eL/T7YPNUje6/fBZ6jJ/eeqr5ka3UzovTz3leaNbtUvj5dntCv/T4793XOs67nUdz7aOP34P+qd3LOs61nUd27qOfV3Hsa7jdTPXh+9Il/F868F+7Ph7RY2raGgVffg+8NsV3eU9X/z1E5HNjYrK3j4+hbw92F4qUlxF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nINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnINUnIM0nIM0nIM0nIM0nIO0i5bZhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQhnOQjnOQjnOQjnOQjnOQftEy23EO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEO0nEOMnAOMnAOMnAOMnAOMi5aZgfOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQQbOQSbOQSbOQSbOQSbOQeZFy+zEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjEOcjCOcjCOcjCOcjCOci6aJldOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAdZOAfZOAfZOAfZOAfZOAfZFy2zG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cg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OAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAdpOAdpOAdpOAdpOAdpFy2zDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgDecgHecgHecgHecgHecg/aJltuMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcZOAcZOAcZOAcZOAcZFy0zA6cgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycg0ycg0ycg0ycg0ycg8yLltmJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5D54Q5SL/OXp75qfqzovQefL0lfH30+FLw+XETeraRe6pbqeH10vHQrq7rVVd3aqm59VbexqlvQe/s7D858aVay3qo3mZf6QZPAf6h+0NzwH6p/yP+1nA513rr1vPFfi9ql8fLsdoX/6fF/7zjRU8xv6Rg9yfyWjtHTzG/pGD3RyHS8veudt8D3OvCHet/O17olZ356387HmlJudZuruq1V3faqbtHz0j//6cLs9dNF/Pzpoh7sis+Nbh/sis+Nbh/sis+Nbh/sis+Nbn1Vtw92xedGt481S93q9rFmqVvdPtYsdavbVbNUr5qletUs1atmqV41S334ZpLP7XbVLNWrZqleNUv1qlmqV81Ss2qWmlWz1KyapWbVLPXhG4M+t9tVs9SsmqVm1Sw1q2ap2TRL1bVplqpr0yxV16ZZqq5Ns1RdvqrbTbNUXZtmqbo2zVJ1bZql6lo1S8mqWUpWzVKyapaSVbPUh2/Y+9xuV81SsmqWklWzlKyapWTVLKWrZildNUvpqllKV81SH7758nO7XTVL6apZSlfNUrpqltJVs5StmqVs1Sxlq2YpWzVLffhG2s/tdtUsZatmKVs1S9mqWcpWzVK+apbyVbOUr5qlfNUs9eGboj+321WzlK+apXzVLOWrZilfNUs92kbxG92umqUebaP4jW5XzVKPtlH8RrerZqlYNUvFqlkqVs1S7N3m9+6Wvdf87t2umqXY+8zv3u2qWerB9p7f6nbVLPVge89vdbtqlnqwvee3ul01S63ae16r9p7Xqr3ntWrvea3ae16r9p7Xqr3ntWrvea3ae16r9p7Xqr3ntWrvea3ae16r9p7Xqr3ntWrvea3ae16r9p7Xqr3ntWrvea3ae16r9p7Xqr3ntWrvea3ae16r9p7Xqr3ntWrvea3ae16r9p73qr3nvWrvea/ae96r9p735au63TRL9aq9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q73mv2nveq/ae96q9571q7/ms2ns+q/aez6q957Nq7/lcvqrbTbPUrNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7Pqv2ns+qveezau/5rNp7/v9v725340iuNI/fUp73c65mMTNYLAwY9mLGu8B+mHvfULdIqk1abFVXBf/s0BdDDVdVPFHKeBRM5i9zjrrv+Rx13/M56r7nc9R9z+eo+57PUfc9n6Puez5H3fd8jrrv+Rx13/M56r7nc9R9z+eo+57PUfc9n6Puez5H3fd8jrrv+Rx13/M56r7nc9R9z+eo+57PUfc9n6Puez5H3fd8jrrv+Rx13/M56r7nc9R9z+eo+57PUfc9n6Puez5H3fd8jrrv+Rx13/M56r7nc9R9z+ek+577ddJ9z9dsD9pLrdketJdasz1oL7Vm60fN9qC91JrtQXupNduD9lJrttv3Upb59NEu+v3ZSnQ/x0+5/Dez/TqD+ewz2H9/8h+aQYrrywxy3pqBfPoZ6KefgX36GTh6BnXJ80fX5f1e82a/THjmVfPuv9/3h842j5ptHTVb9h7i3rNl7zd+dLbv7A+VvTe592zZ+5h7z5a957n3bNn7o3vP1o+a7Z9rL/XebP9ce6n3Zvvn2ku9N9s/117qvdketZeyo/ZSdtReyo7aS9lRe6n99/v+0NketZeyo/ZSdtReyo7aS9lReyk/ai/lR+2l/Ki9lB+1l9p/v+8Pne1Reyk/ai/lR+2l/Ki9lB+1l4qj9lJx1F4qjtpLxVF7qf33+/7Q2R61l4qj9lJx1F4qjtpLxVF7qTxqL5VH7aXyqL1UHrWX2n+/7w+d7VF7qTxqL5VH7aXyqL1UHrWXqqP2UnXUXqqO2kvVUXup/ff7/tDZHrWXqqP2UnXUXqqO2kvVUXupPmov1UftpfqovVQftZfaf7/vD53tUXupPmov1UftpfqovVQftZeao/ZSc9Reao7aS81Re6n99/v+0NketZeao/ZSc9Reao7aS81Jeym5TtpLyXXSXkquk/ZScp20l5LLj5rtSXspuU7aS8l10l5K4Pf7vvdsj9pLwe8jfu/ZHrWXgt+f/N6zPWov9Se77/l7sz1qL/Unu+/5e7M9ai/1J7vv+XuzPWovddR9z+Wo+57LUfc9l6Puey5H3fdcjrrvuRx133M56r7nctR9z+Wo+57LUfc9l6Puey5H3fdcjrrvuRx133M56r7nctR9z+Wo+57LUfc9l6Puey5H3fdcjrrvuRx133M56r7nctR9z+Wo+57LUfc9l6Puey5H3fdcjrrvuRx133M56r7nctR9z+Wo+57LUfc9l6Puey5H3fdc9t/3/DJ/+uir5p3ZTuk8ffSU5zuzVbs0nj7drvDfvP7rjPu4Gc9pM95/D/QPn7EcN2M9bsZ23Iz9uBnHcTPO42Z83J5r+z3SZTxf5mDfzvhroqEl2n6v8fcTCS7RXf7NF3/+icjmnURl+vLjk7y82J4SGS6R4xIFLlHiEhUuUeMSDS3Rfe5pfNdEgkuktH9Fen9n1/X84qk3viPHJQpcosQlKlwi3D67cfvs2d3ZuoZ8+uh1rv/bv7U3Pjnqevppav055Y2fpkY+/Qz008/APv0M/NPPIHDdkrhEhUuE+zdqaP9G6UU7F6R3uW9kxje/un7vnGVqP310fvOL67c/Wvv5t+La8ZJf3nz1l5tsf331F+X68uovf3716lmz/PrqUY3//sOnQ/Uut6X8+WV+/TLt55d5vy/Tf36Z9/sy4+eXeb8vM39+mff7Muvnl3m/L7N/fpn3+zLn55d5ty/zLrdj/fllfv0yab8NV6H9ZkUFflas+/li6JTrzb9l//QziE8/g/z0M6hPP4P+9DOYzz4Dhf+m6nfMAP6bqt8xA/hvqn7HDIy2S9h+h8z3E9F+k6RK+02SKu03Saq03ySp4n6TZLjfJNn+K9S+f9WMmuIS0a5Q0/vcie+uiWhXqKnRrlBTo12hpta4RENL5BcuEe7cl+POfTmusx3X2Y7rbMd1tuM623H7bMftswPX2YHbZwdunx24zg5cZwfu3Ejgzo0E7txI4Do7cJ2duHMjievsxHV24jo7cZ2duH124vbZidtnJ+7cSOLOjRRun427S4YW7txI4Tq7cJ1duM4uXGcXrrML19mF6+zGdXbj9tmN22c37rqR+9wl466JcOdGGndupHHnRnB3yVDcXTJ0cOdGBtfZg+vswe2zt99l4v1EuH324PbZg9tnD26fPbR9tl20fbZdtHMjdtHOjdhF62y7aJ1tF62z7aJ1tl20zraLts+2i7bPNsF1ttD22Sa0fbYJrrMF19lCOzdiQjs3YkI7N2KC62zBdbbSzo2Y4jpbcZ2tuM5WXGcrbp+tuH224vbZSjs3Yoo7N2K4fbbhzo0Y7twIzkEazkEazkEazkEazkEazkEazkEazkGa4/bZjttnO+26EbuPg7xrIty5EcedG3HcuRGcgzScg7TAnRvBOUjDOUjDOUjDOUgL3D47cPvswO2zA7fPDtw+O3H77MSdG0ncuRGcgzScgzScgzScgzScgzTc08IN97RwwzlIK9w+u3D7bJyDNJyDtMKdGyncuZHCnRspXGcXrrMbd24E5yAN5yAN97Rwwz0t3HBPCzfc08IN97Rwa9y5kcadGxncPntw50YGd24E5yAN5yAN5yAN5yAN5yAN5yAN5yAd5yD9ou2z/aLts/2iXTfil+MS0c6N+EU7N+IX7dyI4xyk4xykC+3ciOOe9+m453264DpbcJ2Nc5COc5COc5COc5COc5COc5CuuM5WXGfjngfpuOdBOu55kI57HqTjngfpuOdBOu55kI57HqTjHKTjHKQbrrMN19mG62zDdbbhOttwnW24znZcZ+OeB+m450E6zkE6zkE6zkE6zkE6zkE6zkE6zkE6zkF64Do7cJ0duM4OXGfjngfpuOdBOu55kI57HqTjngfpuOdBOs5BOs5BeuI6O3GdnbjOTlxnJ66zcQ7ScQ7SC9fZuOdBOu55kF64zi5cZ+McpOMcpOMcpOMcpOMcpOMcpDeusxvX2bjnQTrueZCOex6k454H6bjnQTrueZCOex6k454H6TgH6TgH6YPr7MF19uA6e3CdPbjOHlxnD62z46J1duCeBxm450EGzkHGRevswDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIwDnIxDnIxDnIxDnIxDnIvGidnTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHmTgHWTgHWTgHWTgHWTgHWRetswvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIAvnIBvnIBvnIBvnIBvnIPuidXbjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHGTjHOTgHOTgHOTgHOTgHORctM4enIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcnIMcmoOMi+YgVyJYZ69EsM5eiWCdvRLBOnslgnX2SgTr7JUI1tkrEayzVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EuM6mOciVCNfZNAe5EuE6m+YgVyJcZ9Mc5EqE62yag1yJcJ1Nc5ArEa6zaQ5yJcJ1Ns1BrkS4zqY5yJUI19k0B7kS4Tqb5iBXIlxn0xzkSoTrbJqDXIlwnU1zkCsRrrNpDnIlwnU2zUGuRLjOpjnIlQjX2TQHuRLhOpvmIFciXGfTHORKhOtsmoNciXCdTXOQKxGus2kOciXCdTbNQa5EtM4WnIMUnIMUnIMUnIOUi9bZgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQgnOQinOQinOQinOQinOQetE6W3EOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEOUnEO0nAO0nAO0nAO0nAO0i5aZxvOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQRrOQTrOQTrOQTrOQTrOQfpF62zHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOUjHOcjAOcjAOcjAOcjAOci4aJ0dOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAcZOAeZOAeZOAeZOAeZOAeZF62zE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgE+cgC+cgC+cgC+cgC+cg66J1duEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOEcZOMcZOMcZOMcZOMcZF+0zm6cg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2ycg2yc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/aJ1tuMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcpOMcZOAcZOAcZOAcZOAcZFy0zg6cgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycgwycg0ycg0ycg0ycg0ycg8yL1tmJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CJc5CFc5CFc5CFc5CFc5B10Tq7cA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycA6ycQ6ycQ6ycQ6ycQ6yL1pnN85BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BNs5BDs5BDs5BDs5BDs5BzkXr7ME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yME5yHFcZ+Mc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5OAc5NAcZF00B7kSwTp7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"},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)","aztec(view)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":5,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"7Z3djuw6cqXf5Vz7QqSCFOVXGQwG7fEPGmi0Dbs9wMDwu0+dXTtVWVtisnIOsyLI+G6M3cfaWRHf2kWuFUpR//XbP/7TP/znv/yvP//1n//1P377+//xX7/95V//95/+9ud//evb//qv//673/7h3//8l7/8+V/+1/1//m35/f/E8uP6//i3P/319//5H3/707//7be/T8v2d7/901//8e1PZX/7+//857/8029/v5blv//n3/0W96f/yhqv/kqR8vOvlLSe/sr6/F+R5/9Kev6v5Of/yvb8XynP/5X96b8iy/N/JTz/V55XX55XX55XX55XX55XX55XX55XX55XPz2vfnpe/fS8+ul59dPz6qfn1U/Pq5+eVz89r356Xv38vPr5efXz8+rn59XPz6ufn1c/P69+fl79/Lz6+Xn1t+fV355Xf3te/e159bfn1d+eV397Xv3tefW359Xfnle/PK9+eV798rz65Xn1y/Pql+fVL8+rX55Xvzyvfnle/f159ffn1d+fV39/Xv2wXPafl/3n39n28Onv/N352pDCz4tz2D9+Qoj7xdUS99vVsi4fSSfKj3LCYqucYKucaKuc1VY5YqucZKucbKuczVY5xVY5tlblaGtVjrZW5WhrVY62VuVoa1WOtlblaGtVjrZW5WhrVY62VuXV1qq8fvMvetou75gs23s1yVQ13/wPOS/L7eIln6vZLVUji6lqgqlqoqlqOjiL9a4aaVQT9nK7+u2P8e6zw3s9YqyeZKyebKyezVg9xVg9u6160mKsnmCsnmisHmPrczK2Pidj63Mytj4nY+tzMrY+J2Prcza2Pmdj63M2tj5nY+tzNrY+529en+MSb3Hn7Y/hXE82Vs9mrJ5irJ7dVj3bYqyeYKyeaKye1Vg9YqweY+vzZmx93oytz5ux9Xkztj4XY+tzMbY+F2PrczG2Phdj63Mxtj6Xb1+f00c9uZzr2YzVU4zVs9uqZ1+M1ROM1RON1bMq1vP7593Vc/H1haXkn1dLWD6mD1GuLk7L8V2HFE7fddjFTafJTafZTaebm06Lm053J53GZXHTaXDTabTT6Y96vnvXC8uN5dsfy7mebKye715tQlyPeuJ2qicsxuoJxuqJxur57qTwdu/jqOfT+So/6xFj9SRj9WRj9WzG6inG6tlt1RMXvXrebNQ3OpkY3HQa3XS6uulU3HSa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"}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000906cb9c3"},{"kind":"string","value":"EcdsaPublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaKAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaKAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"EcdsaKAccount::entrypoint_parameters"}}],"kind":"struct","path":"EcdsaKAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}},{"name":"signing_pub_key_y","type":{"kind":"array","length":32,"type":{"kind":"integer","sign":"unsigned","width":8}}}],"kind":"struct","path":"EcdsaKAccount::constructor_parameters"}}],"kind":"struct","path":"EcdsaKAccount::constructor_abi"}]}},"file_map":{"105":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::{raw_storage_read, storage_read}\n};\n\nstruct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"111":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, gas::Gas,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, public_call_stack_item::PublicCallStackItem,\n public_call_stack_item_compressed::PublicCallStackItemCompressed, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n let call_request = PublicCallRequest { item, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n self.public_teardown_call_request = PublicCallRequest {\n item,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"119":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\nuse std::{\n embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n utils::point::point_to_bytes, note::note_interface::NoteInterface,\n encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n},\n keys::public_keys::{OvpkM, IvpkM}\n};\n\npub fn compute_encrypted_event_log<Event, let NB: u32, let MB: u32, let OB: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n event: Event\n) -> [u8; OB] where Event: EventInterface<NB, MB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_event(event, randomness).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; OB] = [0; OB];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = OB - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\npub fn compute_encrypted_note_log<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> [u8; M] where Note: NoteInterface<N, NB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(unsafe_rand());\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::compute_encrypted_note_log, keys::public_keys::{OvpkM, IvpkM},\n test::mocks::mock_note::MockNoteBuilder\n };\n use dep::protocol_types::{address::AztecAddress, point::Point};\n use std::test::OracleMock;\n\n #[test]\n fn test_encrypted_note_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38\n ];\n for i in 0..encrypted_note_log_from_typescript.len() {\n assert_eq(log[i], encrypted_note_log_from_typescript[i]);\n }\n assert_eq(encrypted_note_log_from_typescript.len(), log.len());\n }\n}\n"},"120":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_current_public_keys, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{\n hash::sha256_to_field, address::AztecAddress, point::Point, abis::note_hash::NoteHash,\n constants::MAX_NOTE_HASHES_PER_CALL\n};\n\nunconstrained fn compute_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n )\n}\n\nfn compute<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let encrypted_log: [u8; M] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n let log_hash = sha256_to_field(encrypted_log);\n (encrypted_log, log_hash)\n}\n\nfn emit_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n inner_compute: fn(AztecAddress, Field, Field, OvpkM, IvpkM, AztecAddress, Note) -> ([u8; M], Field)\n) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (encrypted_log, log_hash) = inner_compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute_unconstrained);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute_unconstrained);\n }\n}\n"},"121":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::aes128::aes128_encrypt;\n\nuse crate::{keys::public_keys::IvpkM, utils::point::point_to_bytes};\n\nstruct EncryptedLogOutgoingBody {\n eph_sk: Scalar,\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(eph_sk: Scalar, recipient: AztecAddress, recipient_ivpk: IvpkM) -> Self {\n Self { eph_sk, recipient, recipient_ivpk }\n }\n\n /// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n /// be able to derive the key with which the incoming log can be decrypted.\n pub fn compute_ciphertext(self, ovsk_app: Scalar, eph_pk: Point) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high = self.eph_sk.hi.to_be_bytes(32);\n let serialized_eph_sk_low = self.eph_sk.lo.to_be_bytes(32);\n\n let address_bytes = self.recipient.to_field().to_be_bytes(32);\n let serialized_recipient_ivpk = point_to_bytes(self.recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes(32).as_array();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::{encrypted_logs::outgoing_body::EncryptedLogOutgoingBody, keys::public_keys::IvpkM};\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n scalar::Scalar, point::Point, hash::poseidon2_hash_with_separator\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n use crate::context::PrivateContext;\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\nstruct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes(32).as_array();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nfn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"123":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{scalar::Scalar, point::Point};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\nstruct EncryptedLogIncomingBody<let M: u32> {\n plaintext: [u8; M]\n}\n\nimpl<let M: u32> EncryptedLogIncomingBody<M> {\n pub fn from_note<T, let N: u32>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N, M> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T, let MR: u32>(\n event: T,\n randomness: Field\n ) -> Self where T: EventInterface<M, MR> {\n let mut plaintext = event.private_to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, traits::Serialize,\n abis::event_selector::EventSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::NoteInterface},\n encrypted_logs::incoming_body::EncryptedLogIncomingBody, event::event_interface::EventInterface,\n context::PrivateContext, keys::public_keys::IvpkM\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: Field = 3;\n global ADDRESS_NOTE_BYTES_LEN = 32 * 3 + 64;\n\n impl NoteInterface<ADDRESS_NOTE_LEN, ADDRESS_NOTE_BYTES_LEN> for AddressNote {\n fn compute_note_hiding_point(_self: Self) -> Point {\n crate::generators::Ga1\n }\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(_self: Self, _context: &mut PrivateContext, _note_hash_for_nullify: Field) -> Field {\n 1\n }\n\n fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_BYTES_LEN] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_BYTES_LEN] = [0; ADDRESS_NOTE_BYTES_LEN];\n\n let storage_slot_bytes = storage_slot.to_be_bytes(32);\n let note_type_id_bytes = AddressNote::get_note_type_id().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes = serialized_note[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n fn test_encrypted_note_log_incoming_body_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n /// 1. `EncryptedLogIncomingBody::from_note` calls `note.to_be_bytes(storage_slot)` function which serializes\n /// the note to bytes - note that in the case of `AddressNote` the `to_be_bytes` function was automatically\n /// implemented by Aztec macros.\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n /// 2. `body.compute_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: Field = 3;\n global TEST_EVENT_BYTES_LEN = 32 * 3 + 64;\n global TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS = 32 * 3 + 32;\n\n impl EventInterface<TEST_EVENT_BYTES_LEN, TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_BYTES_LEN] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN] = [0; TEST_EVENT_BYTES_LEN];\n\n let randomness_bytes = randomness.to_be_bytes(32);\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn to_be_bytes(self) -> [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] = [0; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS];\n\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[32 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n }\n\n #[test]\n fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_event_log_incoming_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let event_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 185, 29, 14, 152, 216, 130, 219, 151, 80, 185, 43, 223, 167, 8, 89, 189, 88, 188, 101, 137, 255, 136, 84, 252, 79, 18, 52, 3, 110, 54, 54, 206, 244, 209, 246, 226, 207, 247, 143, 253, 211, 75, 160, 224, 172, 41, 45, 7, 208, 137, 90, 56, 59, 4, 234, 48, 53, 23, 130, 230, 49, 249, 142, 243, 170, 72, 183, 242, 49, 124, 46, 52, 198, 75, 55, 102, 56, 89, 254, 67, 59, 157, 249, 120, 184, 67, 154, 16, 148, 227, 93, 37, 120, 199, 93, 166, 80, 127, 173, 52, 80, 135, 87, 1, 168, 164, 51, 48, 126, 120, 47, 102, 211, 227, 234, 170, 208, 99, 111, 198, 170, 226, 156, 244, 241, 174, 206, 30\n ];\n\n assert_eq(event_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..event_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], event_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"},"127":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, MAX_NOTES_PER_PAGE, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, Comparator, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value = serialized_note[selector.index].to_be_bytes(32);\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N, M> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n // Values are computed ahead of time because circuits evaluate all branches\n let is_equal = value_field == select.value.to_field();\n let is_lt = value_field.lt(select.value.to_field());\n\n if (select.comparator == Comparator.EQ) {\n assert(is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.NEQ) {\n assert(!is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LT) {\n assert(is_lt, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LTE) {\n assert(is_lt | is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GT) {\n assert(!is_lt & !is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GTE) {\n assert(!is_lt, \"Mismatch return note field.\");\n }\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N, M> {\n let note = get_note_internal(storage_slot);\n\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n context.push_note_hash_read_request(note_hash_for_read_request);\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N, M> + Eq {\n let opt_notes = get_notes_internal(storage_slot, options);\n\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N, M> + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32, let M: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N, M> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N, M> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32, let M: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N, M>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N, M> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"129":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{context::PrivateContext, note::{note_header::NoteHeader, note_interface::NoteInterface}};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32, let M: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N, M> {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32, let M: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N, M> {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in \n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in \n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the \n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the \n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from \n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let M: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N, M> {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"130":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::NoteInterface,\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, N, M>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n let serialized_note = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, N, M>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N, M> {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, N, M>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, N, M>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N, M> {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, notification_note_hash, nullifier_counter) == 0);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n\n"},"131":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\nstruct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting \n * a change note in a token's transfer function only when there is \"change\" left).\n */\nstruct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH, MAX_ARGS_LENGTH\n},\n traits::Hash,\n hash::{\n pedersen_hash, compute_siloed_nullifier, sha256_to_field, pedersen_commitment,\n poseidon2_hash_with_separator\n}\n};\n// Note: pedersen_commitment is used only as a re-export here\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n poseidon2_hash_with_separator(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x1cce4dbf69f14c44865919991ee1057922e34d7310ba237d71759aa422621ca9);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"140":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"142":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, point::Point};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(_note_hash_counter: u32, _encrypted_note: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(_contract_address: AztecAddress, _randomness: Field, _encrypted_event: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nunconstrained fn compute_encrypted_note_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nunconstrained fn compute_encrypted_event_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_oracle_private<T>(_contract_address: AztecAddress, _message: T, _counter: u32) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<let N: u32>(contract_address: AztecAddress, message: [Field; N], counter: u32) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, message, counter)\n}\n"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"145":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage,\n utils::arr_copy_slice\n};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(block_number: u32, public_data_tree_index: Field) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, public_data_tree_index);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub fn get_key_validation_request(pk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle<let N: u32>(address: Field, storage_slot: Field, block_number: Field, length: Field) -> [Field; N] {}\n\nunconstrained pub fn raw_storage_read<let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> [Field; N] {\n storage_read_oracle(\n address.to_field(),\n storage_slot,\n block_number as Field,\n N as Field\n )\n}\n\nunconstrained pub fn storage_read<T, let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> T where T: Deserialize<N> {\n T::deserialize(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::address::AztecAddress;\n\n use std::test::OracleMock;\n use crate::test::mocks::mock_struct::MockStruct;\n\n global address = AztecAddress::from_field(29);\n global slot = 7;\n global block_number = 17;\n\n #[test]\n fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n"},"150":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"152":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained fn get_public_keys_and_partial_address_oracle_wrapper(address: AztecAddress) -> [Field; 13] {\n get_public_keys_and_partial_address_oracle(address)\n}\n\npub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle_wrapper(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter)\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\nunconstrained pub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) -> Field {\n notify_nullified_note_oracle(nullifier, note_hash, counter)\n}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let NB: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N, NB> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"157":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"159":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V, Context> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T, Context> Storage<T> for Map<K, T, Context> {}\n\nimpl<K, V, Context> Map<K, V, Context> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable<T, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl<T, Context> Storage<T> for PublicMutable<T, Context> {}\n\nimpl<T, Context> PublicMutable<T, Context> {\n // docs:start:public_mutable_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, &mut PublicContext> where T: Serialize<T_SERIALIZED_LEN> + Deserialize<T_SERIALIZED_LEN> {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) {\n self.context.storage_write(self.storage_slot, value);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, UnconstrainedContext> where T: Deserialize<T_SERIALIZED_LEN> {\n unconstrained pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n}\n"},"180":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes}, note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions, note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\nstruct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor. \n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<N, M>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"182":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result = pk.x.to_be_bytes(32);\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result.as_array()\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"199":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize}, point::Point};\n\nstruct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: Point::empty(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x:fields[0], y: fields[1], is_infinite: fields[2] as bool},\n sk_app: fields[3],\n }\n }\n}\n\n"},"2":{"path":"std/array.nr","source":"use crate::cmp::Ord;\nuse crate::option::Option;\nuse crate::convert::From;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of the slice.\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n pub fn sort(self) -> Self where T: Ord {\n self.sort_via(|a: T, b: T| a <= b)\n }\n\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n let sorted_index = unsafe {\n // Safety: These indices are asserted to be the sorted element indices via `find_index`\n let sorted_index: [u32; N] = self.get_sorting_index(ordering);\n\n for i in 0..N {\n let pos = find_index(sorted_index, i);\n assert(sorted_index[pos] == i);\n }\n\n sorted_index\n };\n\n // Sort the array using the indexes\n let mut result = self;\n for i in 0..N {\n result[i] = self[sorted_index[i]];\n }\n // Ensure the array is sorted\n for i in 0..N - 1 {\n assert(ordering(result[i], result[i + 1]));\n }\n\n result\n }\n\n /// Returns the index of the elements in the array that would sort it, using the provided custom sorting function.\n unconstrained fn get_sorting_index<Env>(self, ordering: fn[Env](T, T) -> bool) -> [u32; N] {\n let mut result = [0; N];\n let mut a = self;\n for i in 0..N {\n result[i] = i;\n }\n for i in 1..N {\n for j in 0..i {\n if ordering(a[i], a[j]) {\n let old_a_j = a[j];\n a[j] = a[i];\n a[i] = old_a_j;\n let old_j = result[j];\n result[j] = result[i];\n result[i] = old_j;\n }\n }\n }\n result\n }\n\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n // Apply a function to each element of an array, returning a new array\n // containing the mapped elements.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. This function is also sometimes\n // called `foldl`, `fold_left`, `reduce`, or `inject`.\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. Unlike fold, reduce uses the first\n // element of the given array as its starting accumulator value.\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n // Returns true if all elements in the array satisfy the predicate\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n // Returns true if any element in the array satisfies the predicate\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Convert a sequence of bytes as-is into a string.\n /// This function performs no UTF-8 validation or similar.\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\n// helper function used to look up the position of a value in an array of Field\n// Note that function returns 0 if the value is not found\nunconstrained fn find_index<let N: u32>(a: [u32; N], find: u32) -> u32 {\n let mut result = 0;\n for i in 0..a.len() {\n if a[i] == find {\n result = i;\n }\n }\n result\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"22":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite) | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n// This is a hack as returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"23":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes = x.to_le_bytes(32);\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose_hint, decompose, compute_lt, assert_gt, gt, lt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"24":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n pub fn assert_max_bit_size(self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1]` slice of length `bit_size`.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `bit_size` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1]` slice of length `bit_size`.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `bit_size` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n /// See `Field.to_be_bits`\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n /// See `Field.to_le_bits`\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"249":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f);\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript = 0x2499880e2b1b831785c17286f99a0d5122fee784ce7b1c04e380c4a991da819a;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n"},"255":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"256":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"259":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"261":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc, point::Point\n};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"267":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: Field = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point {\n x: 0,\n y: 0,\n is_infinite: false\n }\n }\n}\n"},"268":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, CONTRACT_INSTANCE_LENGTH},\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"27":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\nmod sha256;\nmod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\nuse sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\ntrait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"280":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr","source":"use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N]\n) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root<let N: u32>(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n assert(false, \"depth should be between 0 and 10\");\n 0\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n"},"284":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"305":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes = max_value.to_be_bytes(32);\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n"},"307":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash_with_separator,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"32":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n"},"321":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"322":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"380":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_k_account_contract/src/main.nr","source":"// Account contract that uses ECDSA signatures for authentication on the same curve as Ethereum.\n// The signing key is stored in an immutable private note and should be different from the signing key.\ncontract EcdsaKAccount {\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteGetterOptions, PrivateContext, PrivateImmutable};\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys,\n keys::getters::get_current_public_keys\n };\n\n use dep::aztec::protocol_types::abis::call_context::CallContext;\n use dep::std;\n\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness\n };\n\n use dep::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[aztec(storage)]\n struct Storage {\n public_key: PrivateImmutable<EcdsaPublicKeyNote>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[aztec(private)]\n #[aztec(initializer)]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\n let this = context.this_address();\n let this_keys = get_current_public_keys(&mut context, this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note_with_keys(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[aztec(private)]\n #[aztec(noinitcheck)]\n #[aztec(view)]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\n // Load auth witness\n let witness: [Field; 64] = get_auth_witness(outer_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes(32).as_array();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n let verification = std::ecdsa_secp256k1::verify_signature(public_key.x, public_key.y, signature, hashed_message);\n assert(verification == true);\n\n true\n }\n}\n"},"381":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr","source":"use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, NoteInterface, NoteGetterOptions, PrivateContext};\n\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator}\n};\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: Field = 5;\n// ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN: Field = 5 * 32 + 64;\n\n// Stores an ECDSA public key composed of two 32-byte elements\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[aztec(note)]\nstruct EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NoteInterface<ECDSA_PUBLIC_KEY_NOTE_LEN, ECDSA_PUBLIC_KEY_NOTE_BYTES_LEN> for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = npk_m_hash\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n \n [x, last_x, y, last_y, self.npk_m_hash]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x = serialized_note[0].to_be_bytes(32);\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes(32)[31];\n\n let part_y = serialized_note[2].to_be_bytes(32);\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes(32)[31];\n\n EcdsaPublicKeyNote { x, y, npk_m_hash: serialized_note[4], header: NoteHeader::empty() }\n }\n\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator([\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator([\n note_hash_for_nullify,\n secret,\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], npk_m_hash: Field) -> Self {\n EcdsaPublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"54":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"68":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"69":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{prelude::Deserialize, context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `keccak256(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\"),\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n FunctionSelector::from_signature(\"consume((Field),Field)\"),\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\"),\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n FunctionSelector::from_signature(\"set_reject_all(bool)\"),\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"70":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\nstruct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"71":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"73":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nfn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"80":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/stored_keys.nr","source":"use crate::keys::public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH};\nuse dep::protocol_types::traits::{Serialize, Deserialize};\n\n// This struct represents how public keys are stored in the key registry. We store not just the keys themselves but also\n// their hash, so that when reading in private we can perform a historical read for the hash and then show that it\n// corresponds to a preimage obtained from an unconstrained hint. We do store the keys keys regardless as they might be\n// needed during public execution, and since we need to broadcast and produce hints in some standardized way.\n// While it might seem odd to create a struct for what is effectively some data and a pure function called on it, state\n// variables rely on serializable structs in order to persist data to storage, so we must use this abstraction.\nstruct StoredKeys {\n public_keys: PublicKeys,\n hash: Field,\n}\n\nimpl StoredKeys {\n // Instances of StoredKeys are expected to only be created by calling this function so that we guarantee that the\n // hash field does indeed correspond to the hash of the keys. Ideally we'd forbid direct access to the struct, but \n // Noir doesn't yet support private members.\n fn new(public_keys: PublicKeys) -> Self {\n Self { public_keys, hash: public_keys.hash().inner }\n }\n}\n\n// Our serialization is the concatenation of the public keys serialization plush the hash, so we need one extra field.\nglobal STORED_KEYS_LENGTH: u32 = PUBLIC_KEYS_LENGTH + 1;\n\nimpl Serialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn serialize(self) -> [Field; STORED_KEYS_LENGTH] {\n // The code below is equivalent to:\n // [ ...self.public_keys.serialize(), self.hash ]\n\n let mut array = [0; STORED_KEYS_LENGTH];\n\n let serialized_keys = self.public_keys.serialize();\n for i in 0..serialized_keys.len() {\n array[i] = serialized_keys[i];\n }\n\n array[PUBLIC_KEYS_LENGTH] = self.hash;\n\n array\n }\n}\n\nimpl Deserialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn deserialize(array: [Field; STORED_KEYS_LENGTH]) -> Self {\n // The code below is equivalent to:\n // Self { public_keys: PublicKeys::deserialize(array[0 : PUBLIC_KEYS_LENGTH]), hash: array[PUBLIC_KEYS_LENGTH] }\n\n let mut serialized_keys = [0; PUBLIC_KEYS_LENGTH];\n for i in 0..serialized_keys.len() {\n serialized_keys[i] = array[i];\n }\n\n let hash = array[PUBLIC_KEYS_LENGTH];\n\n Self { public_keys: PublicKeys::deserialize(serialized_keys), hash }\n }\n}\n"},"81":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\nuse crate::keys::constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\nstruct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\ntrait ToPoint {\n fn to_point(self) -> Point;\n}\n\nstruct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nstruct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nstruct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m : NpkM { inner: Point::empty() },\n ivpk_m : IvpkM { inner: Point::empty() },\n ovpk_m : OvpkM { inner: Point::empty() },\n tpk_m : TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n ( self.npk_m.inner == other.npk_m.inner ) &\n ( self.ivpk_m.inner == other.ivpk_m.inner ) &\n ( self.ovpk_m.inner == other.ovpk_m.inner ) &\n ( self.tpk_m.inner == other.tpk_m.inner )\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x:serialized[0], y:serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x:serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x:serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x:serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nfn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nfn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nfn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"83":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, point::Point, storage::map::derive_storage_slot_in_map,\n traits::is_empty\n};\nuse crate::{\n context::{PrivateContext, UnconstrainedContext},\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{\n public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH}, stored_keys::StoredKeys,\n constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}\n},\n state_vars::{\n shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter,\n public_mutable::PublicMutable, map::Map\n}\n};\n\nmod test;\n\n// This is the number of blocks that must pass after a key rotation event until the old keys are fully phased out and\n// become invalid.\nglobal KEY_REGISTRY_UPDATE_BLOCKS = 5;\n\nglobal KEY_REGISTRY_STORAGE_SLOT = 1;\n\n// A helper function since requesting nsk_app is very common\n// TODO(#6543)\npub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// Returns all current public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_current_public_keys(context: &mut PrivateContext, account: AztecAddress) -> PublicKeys {\n // We're going to perform historical reads from public storage, and so need to constrain the caller so that they\n // cannot use very old blocks when constructing proofs, and hence e.g. read very old keys. We are lax and allow\n // _any_ recent block number to be used, regardless of whether there may have been a recent key rotation. This means\n // that multiple sets of keys are valid for a while immediately after rotation, until the old keys become phased\n // out. We *must* be lax to prevent denial of service and transaction fingerprinting attacks by accounts that rotate\n // their keys frequently.\n // Note that we constrain the max block number even if the registry ends up being empty: this ensures that proof of\n // an empty registry is also fresh.\n let current_header = context.get_header();\n context.set_tx_max_block_number(current_header.global_variables.block_number as u32 + KEY_REGISTRY_UPDATE_BLOCKS);\n\n get_historical_public_keys(current_header, account)\n}\n\n// Returns historical public keys for a given account at some block determined by a block header. We read all keys at\n// once since the constraints for reading them all are actually fewer than if we read them one at a time - any read keys\n// that are not required by the caller can simply be discarded.\n// WARNING: if called with a historical header created from a fixed block this function will explicitly ignore key\n// rotation! This means that callers of this may force a user to use old keys, potentially leaking privacy (e.g. if the\n// old keys were leaked). Only call this function with a header from a fixed block if you understand the implications of\n// breaking key rotation very well.\npub fn get_historical_public_keys(historical_header: Header, account: AztecAddress) -> PublicKeys {\n // TODO: improve this so that we always hint the correct set of keys (either registry or canonical) and hash them\n // once instead of having two different hints and twice as many constraints due to the double hashing.\n\n // The key registry is the primary source of information for keys, as that's where accounts store their new keys\n // when they perform rotation. The key registry conveniently stores a hash of each user's keys, so we can read that\n // single field and then prove that we know its preimage (i.e. the current set of keys).\n let key_registry_hash = key_registry_hash_public_historical_read(historical_header, account);\n if key_registry_hash != 0 {\n let hinted_registry_public_keys = key_registry_get_stored_keys_hint(\n account,\n historical_header.global_variables.block_number as u32\n );\n assert_eq(hinted_registry_public_keys.hash().to_field(), key_registry_hash);\n\n hinted_registry_public_keys\n } else {\n // If nothing was written to the registry, we may still be able to produce the correct keys if we happen to know\n // the canonical set (i.e. the ones that are part of the account's preimage).\n let (hinted_canonical_public_keys, partial_address) = get_public_keys_and_partial_address(account);\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n }\n}\n\nfn key_registry_hash_public_historical_read(historical_header: Header, account: AztecAddress) -> Field {\n // The keys are stored in a Map that is keyed with the address of each account, so we first derive the corresponding\n // slot for this account.\n let keys_storage_slot = derive_storage_slot_in_map(KEY_REGISTRY_STORAGE_SLOT, account);\n\n // The keys are stored as [ ...serialized_keys, hash ], and since arrays get allocated sequential storage slots\n // (prior to siloing!), we simply add the length to the base slot to get the last element.\n let hash_storage_slot = keys_storage_slot + PUBLIC_KEYS_LENGTH as Field;\n\n historical_header.public_storage_historical_read(hash_storage_slot, CANONICAL_KEY_REGISTRY_ADDRESS)\n}\n\nunconstrained fn key_registry_get_stored_keys_hint(account: AztecAddress, block_number: u32) -> PublicKeys {\n // This is equivalent to the key registry contract having an unconstrained getter that we call from an oracle, but\n // PXE does not yet support that functionality so we do this manually instad. Note that this would be a *historical*\n // call!\n\n // TODO (#7524): call the unconstrained KeyRegistry.get_current_keys() function instead\n\n let context = UnconstrainedContext::at_historical(CANONICAL_KEY_REGISTRY_ADDRESS, block_number);\n let keys_storage = Map::new(\n context,\n KEY_REGISTRY_STORAGE_SLOT,\n |context, slot| { PublicMutable::new(context, slot) }\n );\n\n let stored_keys: StoredKeys = keys_storage.at(account).read();\n stored_keys.public_keys\n}\n"},"97":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n address::AztecAddress, header::Header, utils::field::full_field_less_than\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header {\n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf slot by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_data_tree_index\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_data_tree_index, \"Public data tree index doesn't match witness\");\n preimage.value\n };\n\n // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == root_from_sibling_path(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"}}}
|