@aztec/accounts 0.56.0 → 0.58.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.
- package/artifacts/EcdsaKAccount.json +1 -1
- package/artifacts/EcdsaRAccount.json +1 -1
- package/artifacts/SchnorrAccount.json +1 -1
- package/artifacts/SchnorrSingleKeyAccount.json +1 -1
- package/dest/defaults/account_contract.d.ts +1 -1
- package/dest/defaults/account_contract.d.ts.map +1 -1
- package/dest/defaults/account_interface.d.ts +1 -2
- package/dest/defaults/account_interface.d.ts.map +1 -1
- package/dest/defaults/account_interface.js +1 -1
- package/dest/testing/configuration.d.ts.map +1 -1
- package/dest/testing/configuration.js +16 -13
- package/dest/testing/create_account.d.ts.map +1 -1
- package/dest/testing/create_account.js +9 -13
- package/package.json +11 -8
- package/src/defaults/account_contract.ts +1 -1
- package/src/defaults/account_interface.ts +1 -2
- package/src/testing/configuration.ts +15 -13
- package/src/testing/create_account.ts +12 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"transpiled":true,"noir_version":"0.34.0+02fea6abe8637b9fb8f9535d1709b367d5e1da5c","name":"EcdsaRAccount","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"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":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","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":"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":"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":"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":"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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nBAYDYwRMLLihMDIihMCIytOCIysOCEwsuJEwDiw4oTAyIoTAiMrTgiMrDghMBoYI2BkxQmBkRUnBEZWnBAYWXFCYGTFiYAxseKEwMiKEwIjK04IjKw4ITAaGCNgZMUJgZEVJwRGVpwQGFlxQmBkxYmA0VhxQmBkxQmBkRUnBEZWnBAYDYwRMLLihMDIihMCIytOCIysOCEwsuK8BMbU5RljSukK48iKEwIjK04IjKw4ITCy4oTAaGCMgJEVJwRGVpwQGFlxQmBkxQmBkRUnAsbMihMCIytOCIysOCEwsuKEwGhgjICRFScERlacEBhZcUJgZMUJgZEVJwLGiRUnBEZWnBAYWXFCYGTFCYHRwBgBIytOCIysOCEwsuKEwMiKEwIjK04EjIUVJwRGVpwQGFlxQmBkxQmB0cAYASMrTgiMrDghMLLihMDIihMCIytOBIyVFScERlacEBhZcUJgZMUJgdHAGAEjK04IjKw4ITCy4oTAyIoTAiMrTgCMuWPFCYGRFScERlacEBhZcUJgNDBGwMiK8xIYc7YZY67jNUZWnBAYWXFCYGTFeQmMU1dnjFOq2weXYZyZl+GCyO2D80y6fD70vR6sQ9RjvR49qxP12KgHaxb12KgHKxn12KgH6xv12KiHUQ/qsV4P1kLqsVEPVkjqsVEP1k3qsVEPVlPqsVEPVlPqsV6PgdWUemzUg9WUemzUg9WUemzUg9WUemzUw6gH9VivB6sp9dioB6sp9dioB6sp9dioB6sp9dioB6sp9VivR2I1pR4b9WA1pR4b9WA1pR4b9WA1pR4b9TDqQT3W68FqSj026sFqSj026sFqSj026sFqSj026sFqSj3W62GsptRjox6sptRjox6sptRjox6sptRjox5GPajHej1YTanHRj1YTanHRj1YTanHRj1YTanHRj1YTanHej1GVlPqsVEPVlPqsVEPVlPqsVEPVlPqsVEPox7UY70erKbUY6MerKbUY6MerKbUY6MerKbUY6MerKbUY70emdWUemzUg9WUemzUg9WUemzUg9WUemzUw6gH9VivB6sp9dioB6sp9dioB6sp9dioB6sp9dioB6sp9Vivx8RqSj026sFqSj026sFqSj026sFqSj026mHUg3qs14PVlHps1IPVlHps1IPVlHps1IPVlHps1IPVlHqs16OwmlKPjXqwmlKPjXqw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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note","get_key_validation_request","unsafe_rand","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"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":"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":"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":"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":"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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Wy1pv3Ib7VdueCdWX23tdQFpvtk9/OdHDF8Bu58AmxT4Cwmw3/7/Cwmw3+j/Cwmw39K/nwC8A+lfSAD+W9T9BOC/Rd1PAP5b1P0EDGYNnPa+mdN+K3Lab0VO+63Iab8VBe23oqD9VhS0Z6agPTMFTamDptRBU+qgKXXQlDpoSp00pU6aUidNqZOm1ElT6qQpddKUOmlKnTSlTppSF02pi6bURVPqoil10ZS6aEpdNKUumlIXTamLptSTptSTptSTptSTptSTptSTptSTptSTptSTptQTptS1wJS6aB0sitbBomgdLGqBKXXROlgUrYNFLTClrgWm1LXQlHrQlHrQlHrQlHrQlHrQlHrQlHrQlJrWwaJoHSyK1sGiaB0sSmhKLTSlFppSC02phabUtI4ORevoULSODkXr6FC0jg5F6+hQSlNqpSm10pRaaUqtNKVWmlIrTamVptRGU2r7WjuDfbhjSdnX2hnsTrJfa2ewO8lap2S/1s5gd5L9WjuD3Um20c5gBeeId0620c5gBeeTd062k4Ny2nO0056jaVxy0bjkonHJReOSi8YlF41LLhqXXDQuuWhcctG45KJxyUXjkovGJReNSy4al1w0LrloXHLRuOSicclF45KLxiUXjUsuGpdcNC65aFxy0bjkonHJReOSi8YlF41LLhqXXDQuuWhcctG45KJxyUXjkovGJReNSy4al1w0LrloXHLRuOSicclF45KLxiUXjUueNC550rjkSeOSJ41LngtMqSeNS540LnnSuORJ45InjUueNC550rjkSeOSJ41LnjQuedK45EnjkieNS540LnnSuORJ45InjUueNC550rjkSeOSJ41LnjQuedK45EnjkieNS540LnnSuORJ45InjUueNC550rjkSeOSJ41LnjQuedK45EnjkqfRlJq2N+6k7Y07jabURlNqoym10ZTaaEptNKV2mlI7TalpjOKkMYqTxihOGqM4aYzipDGKk8YoThqjOGmM4qQxipPGKE4aozhpjOKkMYqTxihOGqM4aYzipDGKk8YoThqjOGmM4qQxipPGKE4aozhpjOKkMYqTxihOGqM4aYzipDGKk8YoThqjOGmM4qQxipPGKE4aozhpjOKkMYqTxihOGqM4aYzipDGKk8YoThqjOGmM4qQxipPGKE4YoygLjFFcA2Ip9RoQS6nXgFhKvQbEUuo1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ewGjOPV6aq23Ad0eLIssl/1Y1r91Xg9/ZPsWewH/+MJks1Oy1SnZ2SdZfwFv+sJkD9/tz8su4cdyJ9kaKj8OLnkT/LdUv4e/y/d/5DX8mh+HX56Xb7eKGBsR7WEAahnXr1CJO3fPtOv37cw3H/Dmmb2uZ/b588yql/vBPnf4/rnDj4PDl0X1KiZZd8Kfb+KfPuuO9Mg3eO5y9m/vtm3MluyWcHVLeDZLeBcI+okJ5yLXQObY+E7dBZp+WgK/7H9Kr/6nPP7R/+wCZH+aZLVTstYpWe+ULNol/Xqyc7k+oI2bB7SBdkh7J4t2R3sni3ZGOycraFe0d7JfzEF9nOwXc1AfJ/vFHNTHyVqnZL+Yg/o42U4OSjo5KOnkoKSTg9JODko7OSjt5KC0k4PapfHKp0m2k4PSTg5KOzko7eSgtJODsk4Oyjo5KOvkoKyTg9qlIdKnSbaTg7JODso6OSjr5KCsk4PyTg7KOzko7+SgvJOD2qVR2adJtpOD8k4Oyjs5KO/koLyTg4pODio6Oajo5KCik4PapYHgp0m2k4OKTg4qOjmo6OSgopODyk4OKjs5qOzkoLKTg9qlseenSbaTg8pODio7Oajs5KCyk4OqTg6qOjmo6uSgqpOD2qXh7qdJtpODqk4Oqjo5qOrkoKqTg5qdHNTs5KBmJwc1OzmoXRphf5pkOzmo2clBzU4OanZyULORg4qlkYOKpZGDiqWRg4qlkYOKxTol28hBBbvv+N7JNnJQwe43vneynRwUu8/43sl2clBfrSf5x8l2clBfrSf5x8l2clCdepJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depJHp57k0akneXTqSR6depLHF+tJPmVek7XbZL+Wg7qT7OEOSsMv4dsYHyc7PPVy9PDp8adkvydgnz0BZycwp11OHYuMjQTisyeQ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tZTL5eiqN4tVNTeOVo9LuhrL8vNo2Tp6XQVZfhy9rj/k3397IWyXNgRnLb/X0s5a7lZLP2u5Wy3jrOVutcyzlrvVsj67EfnsXtY+u5e1z+5lDb6Kcz8B+CrO/QQMtrBnTguI9sur0X55Ndp6vtHW8522nu+09XwXWkBKC4im1E5TaqcptdOU2mlK7TSlDppSB02pg6bUQVPqoCl10JQ6aEodNKUOmlIHTamTptRJU+qkKXXSlDppSp00pU6aUidNqZOm1ElT6qIpddGUumhKXTSlLppSF02pi6bURVPqoil10ZR60pR60pR60pR60pR60pR60pR60pR60pR60pR6spQ6loWl1GtALKVeA2Ip9RoQS6nXgFhKvQbEUuo1IJZSrwGxlHoNiKXUa0A0pR40pR40pR40pR40pR40pR40pR40pR40pYZR92tANKWGUfdrQDSlFppSC02phabUQlNqoSm10JRaaEotNKVWmlIrTamVptRKU2qlKbXSlFppSq00pVaaUitNqY2m1EZTaqMptdGUGsYorgHRlBrGKK4B0ZQaxiiuAdGUGsYorgHRlBrGKK4B0ZQaxiiuAdGUGsYorgHRlBrGKK4B0ZQaxiiuAdGUGsYorgHRlBrGKK4B0ZQaxiiuAR2+t5JeG2SJjTe9ZjbPHBWXnaFGzLf9tH59I6k12eqU7GyUbC6dkh2dkpVOybL2m14DMlpArP2m14BY+02vASUtoKIFNGEB1UILaNACElpANKUumlIXTamLptRFU+qiKXXRlHrSlHrSlHrSlHrSlHrSlHrSlHrSlHrSlHrSlHrClHosMKUeC0ypxwJT6rHAlHosMKUeC0ypxwJT6rHAlHosMKUeC02pB02pB02pB02pB02pB02pB02pB02pB02pB02pB02phabUQlNqoSm10JRaaEotNKUWmlILTamFptRCU2qlKbXSlFppSq00pVaaUitNqZWm1EpTaqUptdKU2mhKbTSlNppSG02pjabURlNqoym10ZTaaEptNKV2mlI7TamdptROU2qnKbXTlNppSu00pXaaUjtNqYOm1EFT6qApddCUOmhKHTSlDppSB02pg6bUQVPqpCl10pQ6aUpNYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFj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ByWdHJR0clDSyUFJJwd1eJeWlybbyUFJJwclnRyUdHJQ0slBaScHpZ0clHZyUNrJQR3ePemlyXZyUNrJQWknB6WdHJR2clDWyUFZJwdlnRyUdXJQh3c1e2mynRyUdXJQ1slBWScHZZ0clHdyUN7JQXknB+WdHNTh3QZfmmwnB+WdHJR3clDeyUF5JwcVnRxUdHJQ0clBRScHdXgX0Jcm28lBRScHFZ0cVHRyUNHJQWUnB5WdHFR2clDZyUEd3p33pcl2clDZyUFlJweVnRxUdnJQ1clBVScHVZ0cVHVyUId3zX5psp0c1Bfr9n0n2U4O6ot1+76TbCcH9cW6fd9JtpODmp0c1OzkoA7vJP7SZDs5KHbP8b2T7eSg2L3G9062kYOqr9aT/ONkGzmo+mo9yT9OtpGDqsU6JdvIQVWnnuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSd5depJXp16klennuTVqSf57NSTfHbqST479SSfnXqSz8U6JdvIQc1OPclnp57ks1NP8tmpJ/ns1JN8dupJPjv1JJ+depLPTj3JZ6ee5LNTT/LZqSf57NSTfHbqST479SSfnXqSz049yWennuSzU0/y2akn+ezUk3x26kk+O/Ukn516ks9OPclnp57ks1NP8tmpJ/ns1JN8dupJPjv1JJ+depLPTj3JZ6ee5LNTT/LZqSf57NSTfHbqST479SSfnXqSz049yWennuSzU0/y2akn+ezUk3x26kk+O/Ukn516ks9OPclnp57ks1NP8tmpJ/ns1JN8dupJ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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","enqueue_public_function_call_internal","call_private_function_internal","debug_log_format","notify_set_min_revertible_side_effect_counter","directive_invert","directive_integer_quotient"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"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":"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":"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":"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":"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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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","pack_returns","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000004c141a0"},{"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":"EcdsaRAccount::constructor_parameters"}}],"kind":"struct","path":"EcdsaRAccount::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"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"EcdsaRAccount::entrypoint_parameters"}}],"kind":"struct","path":"EcdsaRAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::verify_private_authwit_abi"}]}},"file_map":{"113":{"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, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n 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, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct 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 call_request = PublicCallRequest { contract_address, call_context, args_hash, 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 self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\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"},"121":{"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 N: 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<N> {\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 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 num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> [u8; M] where Note: NoteInterface<N> {\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 encrypted_bytes[64] = num_public_values; // TODO(#8558): This can be just a single bit if we store info about partial fields in ABI\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[65 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[97 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[145 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[193 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 337;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[337 + 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 // num_public_values (1 byte)\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 unconstrained 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 let num_public_values: u8 = 0;\n\n let log: [u8; 449] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note,\n num_public_values\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, 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 assert_eq(encrypted_note_log_from_typescript, log);\n }\n\n #[test]\n unconstrained fn test_encrypted_note_log_of_finalized_partial_note_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_public_value1 = 0x14172339287e8d281545c177313f02b6aa2fedfd628cfd8b7f11a136fd0d6557;\n let note_public_value2 = 0x0834d81e3f73c7e2809b08ae38600ffc76a2554473eeab6de7bff4b33a84feac;\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 let num_public_values: u8 = 2;\n\n // First we compute the encrypted log without the public values\n let log_without_public_values: [u8; 449] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note,\n num_public_values\n );\n\n // Then we \"append\" the public values to the log by copying both the original log and the current log into a new byte array\n let mut log: [u8; 513] = [0; 513];\n for i in 0..449 {\n log[i] = log_without_public_values[i];\n }\n let note_public_value1_bytes: [u8; 32] = note_public_value1.to_be_bytes();\n let note_public_value2_bytes: [u8; 32] = note_public_value2.to_be_bytes();\n for i in 0..32 {\n log[449 + i] = note_public_value1_bytes[i];\n log[481 + i] = note_public_value2_bytes[i];\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_of_finalized_partial_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, 2, 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, 20, 23, 35, 57, 40, 126, 141, 40, 21, 69, 193, 119, 49, 63, 2, 182, 170, 47, 237, 253, 98, 140, 253, 139, 127, 17, 161, 54, 253, 13, 101, 87, 8, 52, 216, 30, 63, 115, 199, 226, 128, 155, 8, 174, 56, 96, 15, 252, 118, 162, 85, 68, 115, 238, 171, 109, 231, 191, 244, 179, 58, 132, 254, 172\n ];\n assert_eq(encrypted_note_log_of_finalized_partial_from_typescript, log);\n }\n}\n"},"122":{"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_public_keys, get_ovsk_app}, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N>, [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 // TODO(#8589): use typesystem to skip this check when not needed\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\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 num_public_values\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient, num_public_values)\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(AztecAddress, AztecAddress, &mut PrivateContext)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_public_keys(ov).ovpk_m;\n let ivpk = get_public_keys(iv).ivpk_m;\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n // Number of public values is always 0 here because `encode_and_encrypt_note(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, iv, num_public_values);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(AztecAddress, AztecAddress, &mut PrivateContext)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Note: We could save a lot of gates by obtaining the following keys in an unconstrained context but this\n // function is currently not used anywhere so we are not optimizing it.\n let ovpk = get_public_keys(ov).ovpk_m;\n let ivpk = get_public_keys(iv).ivpk_m;\n\n // Number of public values is always 0 here because `encode_and_encrypt_note_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n // See the comment in `encode_and_encrypt_note_with_keys_unconstrained` for why having note hash counter\n // and log hash unconstrained here is fine.\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, iv, num_public_values)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: 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>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n // Number of public values is always 0 here because `encode_and_encrypt_note_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient, num_public_values);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: 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>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Number of public values is always 0 here because `encode_and_encrypt_note_with_keys_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient, num_public_values)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n"},"123":{"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\npub struct 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: [u8; 32] = self.eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = self.eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = self.recipient.to_field().to_be_bytes();\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();\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::{address::AztecAddress, scalar::Scalar};\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n #[test]\n unconstrained 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 assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"},"124":{"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\npub struct 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();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn 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"},"125":{"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};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\npub struct EncryptedLogIncomingBody<let N: u32> {\n plaintext: [u8; N * 32 + 64]\n}\n\nimpl<let N: u32> EncryptedLogIncomingBody<N> {\n pub fn from_note<T>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T>(event: T, randomness: Field) -> Self where T: EventInterface<N> {\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, NullifiableNote}},\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: u32 = 3;\n\n impl NullifiableNote for AddressNote {\n fn compute_nullifier(\n _self: Self,\n _context: &mut PrivateContext,\n _note_hash_for_nullify: Field\n ) -> Field {\n 1\n }\n\n unconstrained fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n }\n\n struct AddressNoteHidingPoint {\n inner: Point\n }\n\n impl NoteInterface<ADDRESS_NOTE_LEN> for AddressNote {\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] {\n [self.address.to_field(), self.owner.to_field(), self.randomness]\n }\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote {\n address: AztecAddress::from_field(fields[0]),\n owner: AztecAddress::from_field(fields[1]),\n randomness: fields[2],\n header: NoteHeader::empty()\n }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_LEN * 32 + 64] = [0; ADDRESS_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = AddressNote::get_note_type_id().to_be_bytes();\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: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn compute_note_hash(_self: Self) -> Field {\n crate::generators::Ga1.x\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 unconstrained 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: u32 = 3;\n\n impl EventInterface<TEST_EVENT_LEN> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n comptime\n {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_LEN * 32 + 64] {\n let mut buffer: [u8; TEST_EVENT_LEN * 32 + 64] = [0; TEST_EVENT_LEN * 32 + 64];\n\n let randomness_bytes: [u8; 32] = randomness.to_be_bytes();\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\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: [u8; 32] = serialized_event[i].to_be_bytes();\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_LEN * 32 + 32] {\n let mut buffer: [u8; TEST_EVENT_LEN * 32 + 32] = [0; TEST_EVENT_LEN * 32 + 32];\n\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\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: [u8; 32] = serialized_event[i].to_be_bytes();\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 unconstrained 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, 201, 247, 40, 80, 60, 188, 158, 251, 242, 103, 197, 79, 165, 195, 10, 160, 255, 35, 167, 152, 25, 233, 77, 145, 214, 243, 210, 119, 0, 20, 29, 95, 15, 63, 33, 190, 184, 67, 254, 96, 128, 243, 220, 228, 201, 130, 86, 163, 52, 127, 111, 10, 212, 7, 160, 16, 87, 13, 39, 11, 5, 1, 164, 65, 8, 56, 82, 245, 13, 68, 176, 90, 100, 69, 243, 78, 117, 188, 221, 34, 178, 31, 155, 89, 143, 176, 129, 118, 36, 236, 64, 179, 52, 239, 184, 51, 51, 199, 221, 49, 81, 197, 17, 199, 192, 99, 49, 168, 157, 164, 190, 33, 240, 182, 214, 173, 7, 156, 102, 95, 65, 217, 225, 123, 42, 21, 124, 144\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"},"129":{"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, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\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: [u8; 32] = serialized_note[selector.index].to_be_bytes();\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>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\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 assert(\n compare(value_field, select.comparator, select.value.to_field()), \"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>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, 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> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\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, 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, 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> + NullifiableNote + 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_array(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>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\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].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\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>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<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_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"},"131":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\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>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\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>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\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>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\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> {\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// 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>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\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 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> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\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"},"132":{"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, NullifiableNote},\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, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\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 let note_hash = note.compute_note_hash();\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, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\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 let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\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, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\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"},"133":{"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 */\npub struct 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 */\npub struct 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"},"141":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::oracle::logs_traits::ToBytesForUnencryptedLog;\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\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\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: [u8; 4] = (n as Field).to_be_bytes();\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: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\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\npub struct 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 if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn 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]\nunconstrained fn 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]\nunconstrained fn 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]\nunconstrained fn 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"},"149":{"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"},"151":{"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"},"153":{"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"},"155":{"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\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"159":{"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"},"161":{"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"},"162":{"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 pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(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"},"164":{"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 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> {\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"},"165":{"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, constants::CONTRACT_INSTANCE_LENGTH,\n 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 = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\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"},"166":{"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"},"189":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct 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<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\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<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\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<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\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"},"193":{"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: [u8; 32] = pk.x.to_be_bytes();\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\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained 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, compressed_point);\n }\n\n #[test]\n unconstrained 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, compressed_point);\n }\n}\n"},"211":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct 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)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\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 { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"24":{"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.\npub struct 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 { x: self.x, y: -self.y, is_infinite: self.is_infinite }\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)\n | ((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.\npub struct 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 //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\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 function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because 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\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"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: [u8; 32] = x.to_le_bytes();\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: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_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, compute_lt, assert_gt, gt, 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"},"26":{"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 // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\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; N]` array.\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^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` 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 #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array 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^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` 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 #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\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 // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_le_radix(256)\n }\n // docs:end:to_le_bytes\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 // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_be_radix(256)\n }\n // docs:end:to_be_bytes\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\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: [u1; 32] = exponent.to_le_bits();\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 `elem` {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 x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_radix_example\n}\n"},"273":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\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.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\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\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait 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 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\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\npub trait 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 {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait 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}\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait 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"},"274":{"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"},"278":{"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\n};\nuse super::utils::field::field_from_bytes;\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: [u8; 32] = inputs[i].to_be_bytes();\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: [u8; 32] = input[offset].to_be_bytes();\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: [u8; 32] = logs[offset].value.to_be_bytes();\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: [u8; 32] = logs[offset].value.to_be_bytes();\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 poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 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\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\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\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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"},"284":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 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 { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"285":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct 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"},"29":{"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\npub use 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();\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)]\npub trait 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.)\npub trait 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.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\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 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"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\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 /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\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 /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\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 the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\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 of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\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<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"301":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub 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"},"323":{"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"},"337":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n utils\n};\n\n// Aztec address\npub struct 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 { inner: 0 }\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"},"339":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct 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"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct 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\npub struct 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 { _state: &[] }\n }\n}\n"},"340":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct 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"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n crate::sha256::digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4*(i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\nunconstrained fn build_msg_block_iter<let N: u32>(msg: [u8; N], message_size: u64, msg_start: u32) -> ([u8; 64], u64) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut msg_byte_ptr: u64 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n for k in msg_start..msg_end {\n if k as u64 < message_size {\n msg_block[msg_byte_ptr] = msg[k];\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n (msg_block, msg_byte_ptr)\n}\n\n// Verify the block we are compressing was appropriately constructed\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u64,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u64 {\n let mut msg_byte_ptr: u64 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n let mut extra_bytes = 0;\n if msg_end > N {\n msg_end = N;\n extra_bytes = msg_end - N;\n }\n\n for k in msg_start..msg_end {\n if k as u64 < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n if msg_start as u64 < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if msg_byte_ptr == 64 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n\n if msg_start as u64 < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE as u64 {\n msg_byte_ptr = 0;\n }\n\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..64 {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..64 {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(mut msg_block: [u8; 64], mut msg_byte_ptr: u64) -> ([u8; 64], u64) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n if msg_byte_ptr < 64 {\n for _ in 57..64 {\n if msg_byte_ptr <= 63 {\n msg_block[msg_byte_ptr] = 0;\n msg_byte_ptr += 1;\n }\n }\n }\n }\n (msg_block, msg_byte_ptr)\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; 64], mut msg_byte_ptr: u64, message_size: u64) -> [u8; 64] {\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for _i in 0..64 {\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n if msg_byte_ptr < 56 {\n msg_block[msg_byte_ptr] = 0;\n msg_byte_ptr = msg_byte_ptr + 1;\n } else if msg_byte_ptr < 64 {\n for j in 0..8 {\n msg_block[msg_byte_ptr + j] = len_bytes[j];\n }\n msg_byte_ptr += 8;\n }\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; 64], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4*j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n"},"405":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr","source":"use dep::aztec::prelude::{NoteHeader, NoteInterface, NullifiableNote, 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 macros::notes::note_custom_interface, generators::Ga1 as Gx_1, generators::Ga2 as Gx_2,\n generators::Ga3 as Gy_1, generators::Ga4 as Gy_2, generators::Ga5 as Gnpk_m_hash, generators::G_slot\n};\n\nuse std::hash::from_field_unsafe;\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: u32 = 5;\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#[note_custom_interface]\npub struct 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> 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:[u8; 32] = serialized_note[0].to_be_bytes();\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:[u8; 32] = serialized_note[2].to_be_bytes();\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 to_be_bytes(self, storage_slot: Field) -> [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] = [0; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = EcdsaPublicKeyNote::get_note_type_id().to_be_bytes();\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: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn get_note_type_id() -> Field {\n comptime\n {\n let bytes = \"EcdsaPublicKeyNote\".as_bytes();\n let hash = aztec::protocol_types::hash::poseidon2_hash_bytes(bytes);\n let hash_bytes = hash.to_be_bytes::<4>();\n aztec::protocol_types::utils::field::field_from_bytes(hash_bytes, true)\n }\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn compute_note_hash(self) -> Field {\n let serialized = self.serialize_content();\n std::embedded_curve_ops::multi_scalar_mul(\n [Gx_1, Gx_2, Gy_1, Gy_2, Gnpk_m_hash, G_slot],\n [\n from_field_unsafe(serialized[0]),\n from_field_unsafe(serialized[1]),\n from_field_unsafe(serialized[2]),\n from_field_unsafe(serialized[3]),\n from_field_unsafe(serialized[4]),\n from_field_unsafe(self.get_header().storage_slot)\n ]\n ).x\n }\n}\n\nimpl NullifiableNote for EcdsaPublicKeyNote {\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 [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained 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 [\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"},"406":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_r_account_contract/src/main.nr","source":"// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaRAccount {\n use dep::aztec::prelude::{PrivateContext, PrivateImmutable};\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys,\n keys::getters::get_public_keys,\n macros::{storage::storage, functions::{private, initializer, view, noinitcheck}}\n };\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 #[storage]\n struct Storage<Context> {\n public_key: PrivateImmutable<EcdsaPublicKeyNote, Context>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[private]\n #[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_public_keys(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 #[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 #[private]\n #[noinitcheck]\n #[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] = unsafe {\n get_auth_witness(outer_hash)\n };\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();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n std::ecdsa_secp256r1::verify_signature(public_key.x, public_key.y, signature, hashed_message)\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct 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 if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\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 /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\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 /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\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 /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\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 /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\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 /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\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 /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\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 /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\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 /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\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 /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\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"},"73":{"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"},"74":{"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::{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 `poseidon2_hash_bytes(\"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 = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"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 comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\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(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\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 comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\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 comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\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 comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"75":{"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\npub struct 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"},"76":{"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;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct 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(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\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_array(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"},"78":{"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: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct 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(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\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_array(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"},"84":{"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]\nunconstrained fn 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"},"85":{"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};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct 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\npub struct 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\npub struct 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\npub struct 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]\nunconstrained fn 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]\nunconstrained fn 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]\nunconstrained fn 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"},"87":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all 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_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\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"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.35.0+df29d315d6b71131ffe0180c97130395edb2e4ba-x8664","name":"EcdsaRAccount","functions":[{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"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":"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":"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":"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":"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":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","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":"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":"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":"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":"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":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_integer_quotient","directive_invert"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"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":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"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":"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":"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":"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":"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":"databus"}},"bytecode":"H4sIAAAAAAAA/+x9C5xV4/r/aKaZ7ldK96moFLXfuU/3+1UXpaIocw1RFJWiKIqiKIqiKERRFIUoCiFEIURRFEVRiKL+7zr2HMtY53cc8/3u1vff2p/Pe2btdVje53m+3+f7PO+71tonRf3+6RqKivqx4e/HJ9kRHf5byI74fOfy/rqPYzzOxXr8uyU8zpXyOFfG41w5j3MV7WiZ71wNj38u3uNcTY9ztTzO1fE4V8/jXH0PHzTwOHeWx7/byOOfC3mcS/D4d5M8/rlkj3OpHv9uusc/19jjXDOPf7eFxz/X0uNca49/t63HP9fO41wHj3Mdw3/dn7zvLcN/E0MpSUk5qQk5JtFkhBLSM9OSQ0nJmSlpJs0kpyVnJ6QlJuakJaWlpmemp4bSTVJijslNTk/MDf3+uaTQH9cKFeiTkMWc56X/eJ4JifnPOHMrH/U7l/Pm6vjhaPi4btQfx/Vcx5eG/5m8f2+w/X6ZHZfbMaTQH+fzPtH5fBAq2MecAbzW4EK42AyFYSgUYvqvPvBalwH9d4WI/xoAr3U50H9XAv3nlRuGunLDFa7jK13HQ/LlhmH2+3A7rrLj6gjkhjOB1xoGjM0IEWyfBbzWcKD/Ror4ryHwWlcB/TeKnBtGuHLASNfxKNfx1flywzX2+2g7xthxbQRyQyPgta4BxuY6EWyHgNcaDfTfWBH/GeC1xgD9N46cG65z5YCxruNxruNr8+WG6+33G+wYb8eECOSGBOC1rgfG5kYRbCcCr3UD0H83ifgvCXit8UD/TSTnhhtdOeAm1/FE1/GEfLlhkv1+sx232DE5ArkhGXitScDYTBHBdgrwWjcD/XeriP9Sgde6Bei/28i5YYorB9zqOr7NdTw5X26Yar9Ps+N2O+6IQG5IA15rKjA200WwnQ681jSg/2aI+K8x8Fq3A/13Jzk3THflgBmu4ztdx3fkyw132e8z7Zhlx90RyA1NgNe6Cxibe0Sw3RR4rZlA/80W8V8z4LVmAf03h5wb7nHlgNmu4zmu47vz5YZ77ff77Jhrx7wI5IbmwGvdC4zN/SLYbgG81n1A/z0g4r+WwGvNBfpvPjk33O/KAQ+4jue7juflyw0L7PcH7XjIjocjkBtaAa+1ABibhSLYbg281oNA/z0i4r82wGs9BPTfo+TcsNCVAx5xHT/qOn44X25YZL8vtuMxOx6PQG5oC7zWImBslohgux3wWouB/lsq4r/2wGs9BvTfE+TcsMSVA5a6jp9wHT+eLzc8ab8vs2O5HU9FIDd0AF7rSWBsnhbBdkfgtZYB/beCjO2nXRhe4Tpe7jp+Kh+2V9rvz9jxrB3PeWC7EDg2daJw/lyF86dx36fuXDee7IdVQFw9T/LD8x5+QN8H/wJs7gkJzHmu/sfzNCn5z3hx94VC//1+/dX5uLvGfn/RjpfsWBsBXULer78GiP91IrqEvF//RaD/XhbxH/J+/ZeA/nuFrOvrXLnhZdfxK67jtflyw6v2+3o7XrPj9QjkBuT9+q8CY/OGCLaR9+uvB/pvg4j/kPfrvwb035vk3PCGKwdscB2/6Tp+PV9ueMt+f9uOjXa8E4HcgLxf/y1gbN4VwTbyfv23gf7bJOI/5P36G4H+20zODe+6csAm1/Fm1/E7+XLDe/b7+3Z8YMeWCOQG5P367wFj86EItpH3678P9N9HIv5D3q//AdB/H5Nzw4euHPCR6/hj1/GWfLlhq/3+iR2f2rEtArkBeb/+VmBstotgG3m//idA/30m4j/k/fqfAv33OTk3bHflgM9cx5+7jrflyw077Peddnxhx5cRyA3I+/V3AGOzSwTbyPv1dwL9t1vEf8j79b8A+u8rcm7Y5coBu13HX7mOv8yXG7623/fYsdeObyKQG5D3638NjM235Nh864rBHtfxXtfxN/lis89+32/Hd3Z87xEb9D7aAZgPTA5zngf/+TyzQ38jVgdcMXGej8g7buY6PpgvVj/Y7z/a8ZMdhyLAo+bAa/0A5NHPIhqBvLf9R6D/fhHxX0vgtX4C+u8wOY//7MoNv7iOD7uOD+XLDUfs91/t+M05H4Hc0Ap4rSPA2BwTwXZr4LV+BfrPMVTBf8h7238D+u+kaG5uOObKAY5T845Pch0fzZcbCtn/L9qOGDsKR2vd214oGhebWBFsI+9tjwb6L07Ef8h722OA/itCzg2xrhwQ5zou4jouHP3n3FDUfi9mR3E7SkQgNyDvbS8KjE1JcmxKumJQzHVc3HVcIl9sStnvpe0oY0fZaH5vXg7mA5PLnGf5fz7Pv/Xu7HKumOxz6W0p1/ny+WJ1sv1+ih0V7KgYjlXhfPZ7fVpC/B0yca7/Vnz4+FQ7j0p2VLajih1V7ahmR3U7atgRb0dNO2rZUduO0+w43Y46dtS1o54dZ9hR344Gdpxpx1l2NLSjkR0hO4wdCXYk2pFkR7IdKXakRv95Lmn2e7odje1oYkdTO5rZ0dyOFk487WhlR2s72tjR1o52drS3o4MdHe3oZEdnO7rYcbYdXe3oZkd3O3rYcY4dPe3oZce5dvS2o48dfcNJ7Lzw3/PDf/uF//YP/70gOurPL6x3HFgk37lKHucqe5yr4nGuqse5ah7nqnucq+FxLt7jXE2Pc7U8ztX2OHeax7nTPc7V8ThX1+NcPY9zZ3icq+9xroHHuTM9zp3lca6hx7lGHudCHueMx7kEj3OJHueSPM4le5xL8TiX6nEuzeNcuse5xh7nmnica+pxrpnHueYe51p4nGvpca6Vx7nWHufaeJxr63Gunce59h7nOnic6+hxrpPHuc4e57p4nDvb41xXj3PdPM519zjXw+PcOR7nenqc6+Vx7lyPc709zvXxONfX45yTEOOj/vwpFP7bMvy3wA1zFE4EncQOutafGpST8tkcKtjH9I/G+a9weH4nRf31U+Ov8zahAnxOze/fAlyt0l9j9Y+vVtkr7v/walW8MfSPrlb1P+HxH1yt2n/G9v98ter/F0/+x6vV+L859z9dLf6/8fd/uFrN/54L/vbVav2dvPI3r1b77+Wov3W10/5uvvsbVzv97+fO/3q1Ov9LHv4vV6v7v+X0//Nq9f5Xffg/rnbG/641//Fq9f+Jbv2HqzX4ZxroebUz/6meelztrH+uzX+5WsOC6Hy+qzUqWM3w56sVtP5wXc0UvJb599USEHVR+GqJmBrrX1dLQtVr9mrJuNrPpADryLx62flcGP373wHRUX/+5K0iuf6j/98XagW+Q74Kp9j3iEWoIFYrFJQFjcXWSMci9M+sVih8CxqLT45PLEL/q9UKBXpBY/Hp8YxF6O9brdBIFDQW245/LEJ/x2qFhqfAT1D5JRah/9tqhcaswE9j+SsWof9ktUIDWeAnu/wYi5CH1QKNbkFjscO/sQi5rVZoyAsai51+j8Xvnz8tHBTU5gv//rWy/su1zADgvL4QiQVwfcAA+1vj7s8KGosvRWIB7IMMsI4324Gx2CUSC2C9Z4D1itkBjMVukVgAdc0A87L5EhiLr0ixiAbHAshfA8SfQfrv/7pZBH2TSyppE2VgOPAX5d9EQQMiFVg0DQQWcxdFRwYQ6LuH0oCbUunATanGwLuHmgA3e5oCN3uaAe8eag7cRGkB3ERpCbx7qBVwc6I1cHOiDfDuobbARf92wEX/9sC7hzoAF9M7AhfTOwHvHuoMXKTuAlykPht491BX4OJvN+Dib3fg3UM9gIuq5wAXVXsC7x7qBVysPBe4WNkbV1OZPqTCNyNc4GbmL3zRdw8pFGoFfoeMyN1DCgVlgd9HI3L3kELhW+B324jcPaRQoBc0FkdE7h5SaCQKGotfRe4eUmh4ChqL30TuHlJozAoai6Midw8pNJAFfveZyN1DCo1ugd+jVtXnO5BCDXmBHzH3eyx+//xp4aCgNmcAN5wygfMqJBIL4PqAAfa35jBwZz5aJBbAPsgA63jzGzAWMSKxANZ7BlivGLfeFviVGiKxAOqaAeZlEw2MRSwpFuibRYD8NUD8GaT/Inn3UF/SJkpWOPDZ+TdR0IDoCyyasoDFXHa0JiDOIwEiJxz4XDYgzgMCIgcIiFygY52gF7WjnMuPf8wzKSElJyUpIycnMZSTnp6WZRKz0rJycrKyMxIzUlPTQqnZmTkZ2ckJmVkJuYmZuaGcjJy0ZJOZlJlqQlnmaL7rGWtvckpGKCUtNyWUGEpITEgKZaWnZCZlZyQnpSalpNjLJWampRqTlZxgslKT0hJMQoZJzswKJSblZKQcxcY3lB/wCWkJyVmp6VlZKRnJWZmZOTm5qdkpGWm5JjMlwyRkJtrJZCQmpiUlhTJycnMykxLTU0xSWlaajVBqVigp/S/22tDmZhvHuszUUEpCdkpmshP4nMSUzPRQamJKYnIoNyU3MyNkEhLSspKsyQmh9PTkUHpucmrI5LDtDeVkZ5qchPTErMSsnHSTmWuNyLGHGRnJoeyErOQkk5uRnm0BaOdlzQ0l5uRmmqzcjISszMTE5NTcv9ibmGSyU1KTczNsdHOychJtwC06ErMyEpOsHxIzTXpmSk56akpCKCkl1Z5Lsu5LSMpKsl7OzklM5tsbys7ITkhIDiWnJeYmZKTnhjKyMq3N2TnZucZ63BIxM5Ro/ZGRk5qcmGsjZZIy09IyctNMVmZywl/ml56amBmyjsrKyMhKTEzPyUmy5mZnZCabxIT09IRQbmrmv8ATsheyp3OSs3NTUkNJocxEu82ekkDHc25iYlJCTrrNPhZd1o6EtHSbcTJyUtJsXklNTMvNzkqx1mVbDJhQdk5qZmJCKMuKV3ooIZSWmv2X+Gbmpien2X8n0XotPTs5PcFmslCiTWEp6Zb4KdkpuekJSemWzglJSfaKickm10IgITvXuiIrlEaPb5LlUaIlo02lIZtTs7PSEnLSMpKTM9KTE7KTnGkkJKfk5oRsLs1OT0q3py3nMkIhiwMbqL/iLyPNQX5KKDtk/yc3OTvNpumk9OyktFybGpOyQ5b+ocz0tJzsVJOakZ6ZnJiQkZuSaDNfcmIoNd0w7C0RvpZz7Dxvlvd24wGu44Gu44tcxxmu40zXcZbrONt1nOM6zg0fA+2B+8e53iA7z4vtuCT697c5F4uKTLFzQTQe187n0mjihJ2Lo687GLkkT7J7sKtyBF33/3z7aEH9cBkOXInO3PK/Pv0yF9H7uY4HRf/n16dfbr8PsWOoHVdE//VV94XAcXu+EM6fVwLvHXS/fde5bnzU74mnUFRkEs/JhMTjfsPvMHv94XZcZcfVdoywY6Qdo+y4xo7Rdoyx41o7rrNjrB3j7LjejhvsGG/HBDtutOMmOybaMcmOm+24xY7Jdkyx41Y7brNjqh3T7LjdjjvsmG7HDDvutOMuO2baMcuOu+24x47Zdsyx41477rNjrh3z7LjfjgfsmG/HAjsetOMhOx62Y6Edj9jxqB2L7Fhsx2N2PG7HEjuW2vGEHU9Gh4NZ3AVoZjCHRXMSUhRynubP7fiycDJdnseCvL/O//FTvnPOP1Qk36TQbfswgALl5DqfkFkGVLPlpOCiMy3S5qf+dC37z9rWICUnOZSSk2br5vRUp9HNysjNzbZtkW0qMjOTbENhEnMzbSecmZBu/7PpOclZ/9qrNpEs554ilXNPRxMn/DShnFvh83LOsXsFqZxDl3HLw3NFX3clGKx5ydq5rrM2GEkFHC6ogM+E8fdsfgV8xkMBn42AAg4HKuAzwATwrIgCIm1+TlQBnyMp4Kpo4oRXERTweZ8roGP38yIK+Gx4rujrvkBSwBeOgwJeJaiAq8P4W5NfAVd7KOCaCCjgVUAFXA1MAGtEFBBp84uiCvgiSQFfiiZO+CWCAq71uQI6dq8VUcA14bmir7uOpIDrjoMCXi2ogC+H8fdKfgV82UMBX4mAAl4NVMCXgQngFREFRNr8qqgCvkpSwPXRxAmvJyjgaz5XQMfu10QU8JXwXNHXfZ2kgK8fBwUcIaiAb4TxtyG/Ar7hoYAbIqCAI4AK+AYwAWwQUUCkzW+KKuCbJAV8K5o44bcICvi2zxXQsfttEQXcEJ4r+robSQq48Tgo4EhBBXwnjL938yvgOx4K+G4EFHAkUAHfASaAd0UUEGnzJlEF3ERSwM3RxAlvJijgez5XQMfu90QU8N3wXNHXfZ+kgO8fBwUcJaiAH4TxtyW/An7goYBbIqCAo4AK+AEwAWwRUUCkzR+KKuCHJAX8KJo44Y8ICvixzxXQsftjEQXcEp4r+rpbSQq49Tgo4DWCCvhJGH+f5lfATzwU8NMIKOA1QAX8BJgAPhVRQKTN20QVcBtJAbdHEye8naCAn/lcAR27PxNRwE/Dc0Vf93OSAn5+HBRwtKAC7gjjb2d+BdzhoYA7I6CAo4EKuAOYAHaKKCDS5i9EFfALkgJ+GU2c8JcEBdzlcwV07N4looA7w3NFX3c3SQF3HwcFHCOogF+F8fd1fgX8ykMBv46AAo4BKuBXwATwtYgCIm3eI6qAe0gKuDeaOOG9BAX8xucK6Nj9jYgCfh2eK/q635IU8NvjoIDXCirgvjD+9udXwH0eCrg/Agp4LVAB9wETwH4RBUTa/J2oAn5HUsDvo4kT/p6ggAd8roCO3QdEFHB/eK7o6x4kKeDB46CA1wkq4A9h/P2YXwF/8FDAHyOggNcBFfAHYAL4UUQBkTb/JKqAP5EU8FA0ccKHCAr4s88V0LH7ZxEF/DE8V/R1fyEp4C/HQQHHCirg4TD+juRXwMMeCngkAgo4FqiAh4EJ4IiIAiJt/lVUAX8lKeBv0cQJ/0ZQwKM+V0DH7qMiCngkPFf0dY+RFPDYcVDAcYIKmPdO/JNiov6sds7/kV8BnX+IrYDjgAro2FDQa/37535jNBQQaXOhGE0FLBTDUcDoGOKEnYujrxsT428FdOyOcf0qB+i6FAU8KTxX9HULx3AU0LlupBXwekEFjA3jLy6/AsZ6KGBcBBTweqACxgITQJyIAiJtLiKqgEVIClg0hjjhogQFLOZzBXTsLiaigHHhuaKvW5ykgMWPgwLeIKiAJcL4K5lfAUt4KGDJCCjgDUAFLAFMACVFFBBpcylRBSxFUsDSMcQJlyYoYBmfK6BjdxkRBSwZniv6umVJClj2OCjgeEEFLBfGX/n8CljOQwHLR0ABxwMVsBwwAZQXUUCkzSeLKuDJJAU8JYY44VMICljB5wro2F1BRAHLh+eKvm5FkgJWPA4KOEFQAU8N469SfgU81UMBK0VAAScAFfBUYAKoJKKASJsriypgZZICVokhTrgKQQGr+lwBHburiihgpfBc0detRlLAasdBAW8UVMDqYfzVyK+A1T0UsEYEFPBGoAJWByaAGiIKiLQ5XlQB40kKWDOGOOGaBAWs5XMFdOyuJaKANcJzRV+3NkkBax8HBbxJUAFPC+Pv9PwKeJqHAp4eAQW8CaiApwETwOkiCoi0uY6oAtYhKWDdGOKE6xIUsJ7PFdCxu56IAp4eniv6umeQFPCM46CAEwUVsH4Yfw3yK2B9DwVsEAEFnAhUwPrABNBARAGRNp8pqoBnkhTwrBjihM8iKGBDnyugY3dDEQVsEJ4r+rqNSArY6Dgo4CRBBQyF8WfyK2DIQwFNBBRwElABQ8AEYEQUEGlzgqgCJpAUMDGGOOFEggIm+VwBHbuTRBTQhOeKvm4ySQGTj4MC3iyogClh/KXmV8AUDwVMjYAC3gxUwBRgAkgVUUCkzWmiCphGUsD0GOKE0wkK2NjnCujY3VhEAVPDc0VftwlJAZscBwW8RVABm4bx1yy/Ajb1UMBmEVDAW4AK2BSYAJqJKCDS5uaiCticpIAtYogTbkFQwJY+V8B/BUpEAZuF54q+biuSArY6Dgo4WVABW4fx1ya/Arb2UMA2EVDAyUAFbA1MAG1EFBBpc1tRBWxLUsB2McQJtyMoYHufK6Bjd3sRBWwTniv6uh1ICtjhOCjgFEEF7BjGX6f8CtjRQwE7RUABpwAVsCMwAXQSUUCkzZ1FFbAzSQG7xBAn3IWggGf7XAEdu88WUcBO4bmir9uVpIBdj4MC3iqogN3C+OueXwG7eShg9wgo4K1ABewGTADdRRQQaXMPUQXsQVLAc2KIEz6HoIA9fa6Ajt09RRSwe3iu6Ov2Iilgr+OggLcJKuC5Yfz1zq+A53ooYO8IKOBtQAU8F5gAeosoINLmPqIK2IekgH1jiBPuS1DA83yugI7d54koYO/wXNHXPZ+kgOcfBwWcKqiA/cL4659fAft5KGD/CCjgVKAC9gMmgP4iCoi0+QJRBbyApIAXxhAnfCFBAQf4XAEduweIKGD/8FzR1x1IUsCBx0EBpwkq4EVh/GXkV8CLPBQwIwIKOA2ogBcBE0CGiAIibc4UVcBMkgJmxRAnnEVQwGyfK6Bjd7aIAmaE54q+bg5JAXOOgwLeLqiAuWH8DcqvgLkeCjgoAgp4O1ABc4EJYJCIAiJtvlhUAS8mKeAlMcQJX0JQwEt9roCO3ZeKKOCg8FzR1x1MUsDBx0EB7xBUwMvC+Ls8vwJe5qGAl0dAAe8AKuBlwARwuYgCIm0eIqqAQ0gKODSGOOGhBAW8wucK6Nh9hYgCXh6eK/q6V5IU8MrjoIDTBRVwWBh/w/Mr4DAPBRweAQWcDlTAYcAEMFxEAZE2XyWqgFeRFPDqGOKEryYo4AifK6Bj9wgRBRweniv6uiNJCjjyOCjgDEEFHBXG3zX5FXCUhwJeEwEFnAFUwFHABHCNiAIibR4tqoCjSQo4JoY44TEEBbzW5wro2H2tiAJeE54r+rrXkRTwuuOggHcKKuDYMP7G5VfAsR4KOC4CCngnUAHHAhPAOBEFRNp8vagCXk9SwBtiiBO+gaCA432ugI7d40UUcFx4rujrTiAp4ITjoIB3CSrgjWH83ZRfAW/0UMCbIqCAdwEV8EZgArhJRAGRNk8UVcCJJAWcFEOc8CSCAt7scwV07L5ZRAFvCs8Vfd1bSAp4y3FQwJmCCjg5jL8p+RVwsocCTomAAs4EKuBkYAKYIqKASJtvFVXAW0kKeFsMccK3ERRwqs8V0LF7qogCTgnPFX3daSQFnHYcFHCWoALeHsbfHfkV8HYPBbwjAgo4C6iAtwMTwB0iCoi0ebqoAk4nKeCMGOKEZxAU8E6fK6Bj950iCnhHeK7o695FUsC7joMC3i2ogDPD+JuVXwFneijgrAgo4N1ABZwJTACzRBQQafPdogp4N0kB74khTvgeggLO9rkCOnbPFlHAWeG5oq87h6SAc46DAt4jqID3hvF3X34FvNdDAe+LgALeA1TAe4EJ4D4RBUTaPFdUAeeSFHBeDHHC8wgKeL/PFdCx+34RBbwvPFf0dR8gKeADx0EBZwsq4Pww/hbkV8D5Hgq4IAIKOBuogPOBCWCBiAIibX5QVAEfJCngQzHECT9EUMCHfa6Ajt0PiyjggvBc0dddSFLAhcdBAecIKuAjYfw9ml8BH/FQwEcjoIBzgAr4CDABPCqigEibF4kq4CKSAi6OIU54MUEBH/O5Ajp2PyaigI+G54q+7uMkBXz8OCjgvYIKuCSMv6X5FXCJhwIujYAC3gtUwCXABLBURAGRNj8hqoBPkBTwyRjihJ8kKOAynyugY/cyEQVcGp4r+rrLSQq4/Dgo4H2CCvhUGH9P51fApzwU8OkIKOB9QAV8CpgAnhZRQKTNK0QVcAVJAVfGECe8kqCAz/hcAR27nxFRwKfDc0Vf91mSAj57HBRwrqACPhfG36r8CvichwKuioACzgUq4HPABLBKRAGRNj8vqoDPkxTwhRjihF8gKOBqnyugY/dqEQVcFZ4r+rprSAq45jgo4DxBBXwxjL+X8ivgix4K+FIEFHAeUAFfBCaAl0QUEGnzWlEFXEtSwHUxxAmvIyjgyz5XQMful0UU8KXwXNHXfYWkgK8cBwW8X1ABXw3jb31+BXzVQwHXR0AB7wcq4KvABLBeRAGRNr8mqoCvkRTw9RjihF8nKOAbPldAx+43RBRwfXiu6OtuICnghuOggA8IKuCbYfy9lV8B3/RQwLcioIAPABXwTWACeEtEAZE2vy2qgG+TFHBjDHHCGwkK+I7PFdCx+x0RBXwrPFf0dd8lKeC7x0EB5wsq4KYw/jbnV8BNHgq4OQIKOB+ogJuACWCziAIibX5PVAHfIyng+zHECb9PUMAPfK6Ajt0fiCjg5vBc0dfdQlLALcdBARcIKuCHYfx9lF8BP/RQwI8ioIALgAr4ITABfCSigEibPxZVwI9JCrg1hjjhrQQF/MTnCujY/YmIAn4Univ6up+SFPDT46CADwoq4LYw/rbnV8BtHgq4PQIK+CBQAbcBE8B2EQVE2vyZqAJ+RlLAz2OIE/6coIA7fK6Ajt07RBRwe3iu6OvuJCngzuOggA8JKuAXYfx9mV8Bv/BQwC8joIAPARXwC2AC+FJEAZE27xJVwF0kBdwdQ5zwboICfuVzBXTs/kpEAb8MzxV93a9JCvj1cVDAhwUVcE8Yf3vzK+AeDwXcGwEFfBiogHuACWCviAIibf5GVAG/ISngtzHECX9LUMB9PldAx+59Igq4NzxX9HX3kxRw/3FQwIWCCvhdGH/f51fA7zwU8PsIKOBCoAJ+B0wA34soINLmA6IKeICkgAdjiBM+SFDAH3yugI7dP4go4PfhuaKv+yNJAX88Dgr4iKAC/hTG36H8CviThwIeioACPgJUwJ+ACeCQiAIibf5ZVAF/JingLzHECf9CUMDDPldAx+7DIgp4KDxX9HWPkBTwyHFQwEcFFfDXMP5+y6+Av3oo4G8RUMBHgQr4KzAB/CaigEibj4oq4FGSAh6LIU74GEEBnfSHAgPL7n+laOx1KQr4W3iu6OueVJijgM51I62AiwQVsFAYf9GFo/6sds7/kV8BnX+IrYCLgApYCJgAogtrKCDS5pjCmgoYU5ijgIULEydcuDD+urE+V0DH7lgRBYwOzxV93TiSAsYdBwVcLKiARcL4K5pfAYt4KGDRCCjgYqACFgEmgKIiCoi0uZioAhYjKWDxwsQJFycoYAmfK6BjdwkRBSwaniv6uiVJCljyOCjgY4IKWCqMv9L5FbCUhwKWjoACPgZUwFLABFBaRAGRNpcRVcAyJAUsW5g44bIEBSzncwV07C4nooClw3NFX7c8SQHLHwcFfFxQAU8O4++U/Ap4socCnhIBBXwcqIAnAxPAKSIKiLS5gqgCViApYMXCxAlXJCjgqT5XQMfuU0UU8JTwXNHXrURSwErHQQGXCCpg5TD+quRXwMoeClglAgq4BKiAlYEJoIqIAiJtriqqgFVJClitMHHC1QgKWN3nCujYXV1EAauE54q+bg2SAtY4Dgq4VFAB48P4q5lfAeM9FLBmBBRwKVAB44EJoKaIAiJtriWqgLVICli7MHHCtQkKeJrPFdCx+zQRBawZniv6uqeTFPD046CATwgqYJ0w/urmV8A6HgpYNwIK+ARQAesAE0BdEQVE2lxPVAHrkRTwjMLECZ9BUMD6PldAx+76IgpYNzxX9HUbkBSwwXFQwCcFFfDMMP7Oyq+AZ3oo4FkRUMAngQp4JjABnCWigEibG4oqYEOSAjYqTJxwI4IChnyugI7dIREFPCs8V/R1DUkBTVgB8ysfOoYnA1UvPnydBDv3RDuS7Ei2I8WOVDvS7Ei3o7EdTexoakczO5rb0cLxox2t7GhtRxs72trRzo72dnSwo6MdnezobEcXO862o6sd3ezobkcPO84JK6Hblwlh4XOfS/Q4l+RxLtnjXIrHuVSPc2ke59I9zjX2ONfE41xTj3PNPM419zjXwuNcS49zrTzOtfY418bjXFuPc+08zrX3ONfB41xHj3OdPM519jjXxePc2R7nunqc6+ZxrrvHuR4e587xKLLynkNvGf4bKtjnT5wtaP5KKIwr2BKBelWhKqdgyx+LgtjsxCIJ4r/f45pc8GslhP1nUoCxqOjnWCT9e54mtWA2h1w2m7SCXCvhT/4z6cBYnOrPWITyzdM0/oc2p+T+xWbT5J9dK83Df6YpMBaV/BaLNM95mmb/u82p/8Fm0/x/vVbqf/SfaQGMRWX/xCLh/5inafm/2Jz6f9psWv39a2X9F/+Z1sBYVPFDLFL/6zxNm79nc+hv2Gza/p1rhf6W/0w7YCyqHt9YJP/NeZr2/83mpL9ts+nwf14rKfd/8J/pCIxFteMVi9T/aZ6m03+2Oe1/tNl0/g/XSs/9n/1nugBjUT3ysQj9g3mas71sDv0jm03Xv17L/EP/mW7AWNSIZCyy//E8Tfc/25xYAJtND9e1EnIL5D9zDjAW8RGKRahgHwNcHzDA/ta4+7MC37ckEgtgH2SAdbypAoxFLZFYAOs9A6xXTHVgLGqLxAKoawaYl01NYCxOI8UCfWMCkL8GiD/D8l/+GxMKGmdkjdETtmeaGIrkjQm4ef/5xoRehYkT7kW4MeFcn9+Y4Nh9buE/HAy6biiSt6OdAwNbdsRuR+sd9nmf8Cb8v3dFe4dB6D7XpzD/djRE1srb3ewNBH0fcHAZBO9dGH+3TO/CGmrXAxjrvjCbU5IiqXZ9SWp3XmHihM8jqN35Plc7x+7zxdWuBwxs6Vke06WoXb+wz/vnV7t+HmrXPwJq1wOodv2AoO9PCi466yNtvgCXPU1UFF6Jzw0njUJgDCJbgwvB1QI6aTkxvpBQJfnd7jzsoO0eIFIdIjE+kJwnQgX7GCcmAwl54kKgDy8S4MtFBL5kgCv0vFolwzVXli/QeBoIxFMmya+Zhf/auaFzU3egH7JgfkjKiWTnmgWOX94nuzBxwtmEzjXH552rY3eOeOfaHQa2zASP6VI619ywzwfl71xzPTrXQRHoXBFZK69zzQWCfhApuOisj7T5Yp9XpJnhpBEN9mEm0IfIxHuJz+Ph4OUSQnULtJvyRHEeDtGVLBI7l/q8M3J8eCnBh5cAfThYZFUCmb8u83nOcWJyGSHnXE7q/C4ndtR5vkBzCImnISS/DolAR428030ozA+pCZHsqIeC45f3uaIwccJXEDrqK33eUTt2XyneUXeDgS0tx2O6lI56WNjnw/N31MM8OurhEeioEVkrr6MeBgT9cFJw0VkfafNVPq+mhoSTBrqjHgL0ITLxXu3zeDh4uZpQ3QLtpnTUeThEV7JI7IzweUft+HAEwYdXA304UqSjRuavUT7POU5MRhFyzjWkzu8aYked5ws0h5B4Gk3y6+gIdNRdgX4YA/NDTkRfcjoGHL+8z7WFiRO+ltBRX+fzjtqx+zrxjrorDGwm12O6lI56bNjn4/J31GM9OupxEeioEVkrr6MeCwT9OFJw0VkfafP1Pq+mRoeTBrqjHg30ITLx3uDzeDh4uYFQ3QLtpnTUeThEV7JI7Iz3eUft+HA8wYc3AH04QaSjRuavG32ec5yY3EjIOTeROr+biB11ni/QHELiaSLJrxMj0FGfDfTDJJgfEiPaUU8Cxy/vc3Nh4oRvJnTUt/i8o3bsvkW8oz4bBrasiHXUk8M+n5K/o57s0VFPiUBHjchaeR31ZCDop5CCi876SJtv9Xk1NTGcNNAd9USgD5GJ9zafx8PBy22E6hZoN6WjzsMhupJFYmeqzztqx4dTCT68DejDaSIdNTJ/3e7znOPE5HZCzrmD1PndQeyo83yB5hAST9NJfp0egY4a+a75GTA/ZET0fZczwPHL+9xZmDjhOwkd9V0+76gdu+8S76i7wMCWErH3Xc4M+3xW/o56pkdHPSsCHTUia+V11DOBoJ9FCi466yNtvtvn1dT0cNJAd9TTgT5EJt57fB4PBy/3EKpboN2UjjoPh+hKFomd2T7vqB0fzib48B6gD+eIdNTI/HWvz3OOE5N7CTnnPlLndx+xo87zBZpDSDzNJfl1bgQ66s5AP8yD+SEhPZId9Txw/PI+9xcmTvh+Qkf9gM87asfuB8Q76s4wsGWnekyX0lHPD/t8Qf6Oer5HR70gAh01ImvlddTzgaBfQAouOusjbX7Q59XU3HDSQHfUc4E+RCbeh3weDwcvDxGqW6DdlI46D4foShaJnYd93lE7PnyY4MOHgD5cKNJRI/PXIz7POU5MHiHknEdJnd+jxI46zxdoDiHxtIjk10UR6Kg7Af2wGOaHzLRIdtSLwfHL+zxWmDjhxwgd9eM+76gdux8X76g7wcCWlOYxXUpHvSTs86X5O+olHh310gh01IislddRLwGCfikpuOisj7T5CZ9XU4vCSQPdUS8C+hCZeJ/0eTwcvDxJqG6BdlM66jwcoitZJHaW+byjdny4jODDJ4E+XC7SUSPz11M+zzlOTJ4i5JynSZ3f08SOOs8XaA4h8bSC5NcVEeioOwL9sBLmh+SI3vW9Ehy/vM8zhYkTfobQUT/r847asftZ8Y66I27ZKWJ3fT8X9vmq/B31cx4d9aoIdNSIrJXXUT8HBP0qUnDRWR9p8/M+r6ZWhJMGuqNeAfQhMvG+4PN4OHh5gVDdAu2mdNR5OERXskjsrPZ5R+34cDXBhy8AfbhGpKNG5q8XfZ5znJi8SMg5L5E6v5eIHXWeL9AcQuJpLcmvayPQUXcA+mEdbocmOZId9Tpw/PI+LxcmTvhlQkf9is87asfuV8Q76g64pivTY7qUjvrVsM/X5++oX/XoqNdHoKNGZK28jvpVIOjXk4KLzvpIm1/zeTW1Npw00B31WqAPkYn3dZ/Hw8HL64TqFmg3paPOwyG6kkVi5w2fd9SOD98g+PB1oA83iHTUyPz1ps9zjhOTNwk55y1S5/cWsaPO8wWaQ0g8vU3y69sR6KjbA/2wEVdPpkSyo94Ijl/e553CxAm/Q+io3/V5R+3Y/a54R90et+yU4TFdSke9Kezzzfk76k0eHfXmCHTUiKyV11FvAoJ+Mym46KyPtPk9n1dTb4eTBrqjfhvoQ2Tifd/n8XDw8j6hugXaTemo83CIrmSR2PnA5x2148MPCD58H+jDLSIdNTJ/fejznOPE5ENCzvmI1Pl9ROyo83yB5hASTx+T/PpxBDrqdkA/bIX5IS2iv561FRy/vM8nhYkT/oTQUX/q847asftT8Y66HQxsqRH79axtYZ9vz99Rb/PoqLdHoKNGZK28jnobEPTbScFFZ32kzZ/5vJr6OJw00B31x0AfIhPv5z6Ph4OXzwnVLdBuSkedh0N0JYvEzg6fd9SOD3cQfPg50Ic7RTpqZP76wuc5x4nJF4Sc8yWp8/uS2FHn+QLNISSedpH8uisCHXVboB92i3bUu8Hxy/t8VZg44a8IHfXXPu+oHbu/Fu+o2wp21HvCPt+bv6Pe49FR741AR43IWnkd9R4g6PeKdNRIm7/xeTW1K5w00B31LqAPkYn3W5/Hw8HLt4TqFmg3paPOwyG6kkViZ5/PO2rHh/sIPvwW6MP9Ih01Mn995/Oc48TkO0LO+Z7U+X1P7KjzfIHmEBJPB0h+PRCBjroN0A8HYX5Ijui7vg+C45f3+aEwccI/EDrqH33eUTt2/yjeUbeBgS0jYu/6/ins80P5O+qfPDrqQxHoqBFZK6+j/gkI+kOk4KKzPtLmn31eTR0IJw10R30A6ENk4v3F5/Fw8PILoboF2k3pqPNwiK5kkdg57POO2vHhYYIPfwH68IhIR43MX7/6POc4MfmVkHN+I3V+vxE76jxfoDmExNNRkl+PRqCjbg30wzFcR50dyY76GDh+//7EEifsXBx93ZNi/d1RO3afFPuHf0HXjWhH3RrXdCV6TJfSURcK+zw6NurP3XOh2L921M4/xO6oEVkrr6MuBAR9dCwnuOisj7Q5Jtbf1dTRcNJAd9RHgcqJTLyFfR4PBy+FY/HVLdBuSkedh0N0JYvETizZh6GCff7F5ViCDwsDfRgH9mHeB60ByPxVxOc5x4lJEULOKQqMtbuGKhrL66jzfIHmEBJPxUh+LRbL76hbAf1QHOaHhIjuURcHxy/vUyKWOOEShI66pM87asfukuIddStYR50dsT3qUmGfl87fUZfy6KhLR6CjbgXsqEsBQV86lhNcdNZH2lzG59VUsXDSQHfUxYA+RCbesj6Ph4OXsoTqtiy4k0HPLw+H6EoWiZ1yPu+oHR+WI/iwLNCH5UU6amT+OtnnOceJycmEnHMKqfM7hdhR5/kCzSEkniqQ/FohAh11S2BHXRHmh8TESHbUFcHxy/ucGkuc8KmEjrqSzztqx+5K4h11S1hHnZXtMV1KR1057PMq+Tvqyh4ddZUIdNQtgR11ZSDoq8RygovO+kibq/q8mqoQThrojroC0IfIxFvN5/Fw8FKNUN0C7aZ01Hk4RFeySOxU93lH7fiwOsGH1YA+rCHSUSPzV7zPc44Tk3hCzqlJ6vxqEjvqPF+gOYTEUy2SX2tFoKNuAeyoa8P8kBPRPera4PjlfU6LJU74NEJHfbrPO2rH7tPFO+oWsI7aRGyPuk7Y53Xzd9R1PDrquhHoqFsAO+o6QNDXjeUEF531kTbX83k1VSucNNAddS2gD5GJ9wyfx8PByxmE6hZoN6WjzsMhupJFYqe+zztqx4f1CT48A+jDBiIdNTJ/nenznOPE5ExCzjmL1PmdReyo83yB5hASTw1Jfm0YgY66ObCjbgTzQ1JEO+pG4PjlfUKxxAmHCB218XlH7dhtxDvq5rCOOjNiHXVC2OeJ+TvqBI+OOjECHXVzYEedAAR9YiwnuOisj7Q5yefVVMNw0kB31A2BPkQm3mSfx8PBSzKhugXaTemo83CIrmSR2EnxeUft+DCF4MNkoA9TRTpqZP5K83nOcWKSRsg56aTOL53YUef5As0hJJ4ak/zaOAIddTNgR90E5ofU9Eh21E3A8cv7NI0lTrgpoaNu5vOO2rG7mXhH3QzWUaelekyX0lE3D/u8Rf6OurlHR90iAh11M2BH3RwI+haxnODC11GBNrf0eTXVOJw00B11Y6APkYm3lc/j4eClFaG6BdpN6ajzcIiuZJHYae3zjtrxYWuCD1sBfdhGpKNG5q+2Ps85TkzaEnJOO1Ln147YUef5As0hJJ7ak/zaPgIddVNgR90Bt0MT0Y66Azh+eZ+OscQJdyR01J183lE7dncS76ibwjrqpIh11J3DPu+Sv6Pu7NFRd4lAR90U2FF3BoK+SywnuOisj7T5bJ9XU+3DSQPdUbcH+hCZeLv6PB4OXroSqlug3ZSOOg+H6EoWiZ1uPu+oHR92I/iwK9CH3UU6amT+6uHznOPEpAch55xD6vzOIXbUeb5AcwiJp54kv/aMQEfdBNhR98LtUYci2VH3Ascv73NuLHHC5xI66t4+76gdu3uLd9RNYB11eshjupSOuk/Y533zd9R9PDrqvhHoqJsAO+o+QND3jeUEF531kTaf5/Nqqmc4aaA76p5AHyIT7/k+j4eDl/MJ1S3QbkpHnYdDdCWLxE4/n3fUjg/7EXx4PtCH/UU6amT+usDnOceJyQWEnHMhqfO7kNhR5/kCzSEkngaQ/DogAh11Y2BHPRBXT5pIdtQDwfHL+1wUS5zwRYSOOsPnHbVjd4Z4R90Y1lGn5HpMl9JRZ4Z9npW/o8706KizItBRNwZ21JlA0GfFcoKLzvpIm7N9Xk0NCCcNdEc9AOhDZOLN8Xk8HLzkEKpboN2UjjoPh+hKFomdXJ931I4Pcwk+zAH6cJBIR43MXxf7POc4MbmYkHMuIXV+lxA76jxfoDmExNOlJL9eGoGOOh3YUQ/G3fMY0V/PGgyOX97nsljihC8jdNSX+7yjduy+XLyjTse9mSxiv541JOzzofk76iEeHfXQCHTU6cCOeggQ9ENjOcFFZ32kzVf4vJq6NJw00B31pUAfIhPvlT6Ph4OXKwnVLdBuSkedh0N0JYvEzjCfd9SOD4cRfHgl0IfDRTpqZP66yuc5x4nJVYScczWp87ua2FHn+QLNISSeRpD8OiICHXUasKMeCfNDTkT3qEeC45f3GRVLnPAoQkd9jc87asfua8Q76jTcr2flekyX0lGPDvt8TP6OerRHRz0mAh11GrCjHg0E/ZhYTnDRWR9p87U+r6ZGhJMGuqMeAfQhMvFe5/N4OHi5jlDdAu2mdNR5OERXskjsjPV5R+34cCzBh9cBfThOpKNG5q/rfZ5znJhcT8g5N5A6vxuIHXWeL9AcQuJpPMmv4yPQUacCO+oJMD/kJkeyo54Ajl/e58ZY4oRvJHTUN/m8o3bsvkm8o06FddShTI/pUjrqiWGfT8rfUU/06KgnRaCjTgV21BOBoJ8UywkuOusjbb7Z59XU+HDSQHfU44E+RCbeW3weDwcvtxCqW6DdlI46D4foShaJnck+76gdH04m+PAWoA+niHTUyPx1q89zjhOTWwk55zZS53cbsaPO8wWaQ0g8TSX5dWoEOuoUYEc9DeaH9Ije9T0NHL+8z+2xxAnfTuio7/B5R+3YfYd4R52Ce446Ynd9Tw/7fEb+jnq6R0c9IwIddQqwo54OBP2MWE5w0VkfafOdPq+mpoaTBrqjngr0ITLx3uXzeDh4uYtQ3QLtpnTUeThEV7JI7Mz0eUft+HAmwYd3AX04S6SjRuavu32ec5yY3E3IOfeQOr97iB11ni/QHELiaTbJr7Mj0FEnAzvqObg96oi+63sOOH55n3tjiRO+l9BR3+fzjtqx+z7xjjoZd9d3xN71PTfs83n5O+q5Hh31vAh01MnAjnouEPTzYjnBRWd9pM33+7yamh1OGuiOejbQh8jE+4DP4+Hg5QFCdQu0m9JR5+EQXckisTPf5x2148P5BB8+APThApGOGpm/HvR5znFi8iAh5zxE6vweInbUeb5AcwiJp4dJfn047NdIdpdJhbG25H0WxhInvJDQXT7i8+7SsfsRQnfpNVcEQR4hkBhIPHq8/epDpN2PihQTDwNtXuTzYsKx9VFCMbHY58W3E5fF5JxTUB8+RiocHjsOhUMiqXB4PJY44ccJhcMSnxcOjt1LRAoHB8hLCCQGEo8eb7/6EGn3UpHC4TGgzU/4vHBwbF1KKBye9Hnh4MTlSXLOKagPl5EKh2UR2MNPAO7hLwdyKJLF0vJYTrH0VCxxwk8RiqWnfV4sOXY/HaFiKVSwj1kWnit663AZMEbIeK/wuYA6iW4FQUBX+lxAHZtXEux+hiR6z3jcAoL2CTtmCI4/TSh6kHx/1ue4d3z4LMGHK4A+fE6k0UJqziqf64QTk1WEfPk8KV8+T9zuzfMFmkNIPL1A4hDaly8AbS4cjn+0a67xUX/+oOd/TmG8n9Fz7CEwx+4Cc+wmMMeuAnM8W2COXQTm2Flgjp0E5thRYI4dBObYXmCO7QTm2FZgjm0E5thaYI6tBObYUmCOLQTm2Fxgjs0E5thUYI5NBObYWGCO6QJzTBOYY6rAHFME5pgsMMckgTkmCswxgTBH9wdz7QTitf94Zv0k1zVX2zXbNXa8aMdLdqy1Y50dL9vxih2v2rHejtfseN2ON+zYYMebdrxlx9t2bLTjHTvetWOTHZvteM+O9+34wI4tdnxox0d2fGzHVjs+seNTO7bZsd2Oz+z43I4dduy04ws7vrRjlx277fjKjq/t2GPHXju+seNbO/bZsd+O7+z43o4Ddhy04wc7frTjJzsO2fGzHb/YcdiOI3b8asdv4fssjsZG/fkZ/dXhDVr3uTUe5170OPeSx7m1HufWeZx72ePcKx7nXvU4t97j3Gse5173OPeGx7kNHufe9Dj3lse5tz3ObfQ4947HuXc9zm3yOLfZ49x7Hufe9zj3gce5LR7nPvQ495HHuY89zm31OPeJx7lPPc5t8zi33ePcZx7nPvc4t8Pj3E6Pc194nPvS49wuj3O7Pc595XHua49zezzO7fU4943HuW89zu3zOLff49x3Hue+9zh3wOPcQY9zP3ic+9Hj3E8e5w55nPvZ49wvHucOe5w74nHuV49zv3mccxJifNSfP+gNd+Bmm3HyNeha1JsMgJt3Zo2IzcDNQPOiiM3AzUXzkojNwM1Ks1bEZuDmp1knYjNwM9W8LGIzcHPWvCJiM3Cz17wqYjNw89isF7EZuBltXhOxGbi5bV4XsRm4WW7eELEZuPluNojYDNzMN2+K2Ay8OcC8JWIz8GYD87aIzcCbF8xGEZuBN0OYd0RsBt5cYd4VsRl4s4bZJGIz8OYPs1nEZuDNJOY9EZuBN6eY90VsBt7sYj4QsRl484zZImIz8GYc86GIzcCbe8xHIjYDbxYyH4vYDLz5yGwVsRl4M5P5RMRm4M1R5lOgzc5DoDEue09y2RzlOuf2Rahgn+AhUNAcg4dAMXMMHgLFzDF4CBQzx+AhUMwcg4dAMXMMHgLFzDF4CBQzx+AhUMwcg4dAMXMMHgLFzDF4CBQzx+AhUMwcg4dAMXMMHgLFzPFEfwgUc900mu3bY/0fn88E5vi5wBx3CMxxp8AcvxCY45cCc9wlMMfdAnP8SmCOXwvMcY/AHPcKzPEbgTl+KzDHfQJz3C8wx+8E5vi9wBwPCMzxoMAcfxCY448Cc/xJYI6HBOb4s8AcfxGY42GBOR4RmOOvAnP8jXQPZxR0ngmmkMv+vGses3OPirPn7ChkR7QdMXYUtiPWjjg7ithR1I5idhS3o4QdJe0oZUdpO8rYUdaOcnaUt+NkO06xo4IdFe041Y5KdlS2o4odVe2oZkd1O2rYEW9HTTtq2VHbjtPsON2OOnbUtaOeHWfYUd+OBnacacdZdjS0o5EdITuMHQl2JNqRZEeyHSl2pNqRZke6HY3taGJHUzua2dE87ncftIiL+vPLjY55vPDIcVL+cyd5nCvkcS7a41yMx7nCHudiPc7FeZwr4nGuqMe5Yh7ninucK+FxrqTHuVIe50p7nCvjca6sx7lyHufKe5w72ePcKR7nKnicq+hx7lSPc5U8zlX2OFfF41xVj3PVPM5V9zgX73Gupse5Wh7nanucO83j3Oke5+p4nKvrca6ex7kzPM7V9zjXwOPcmR7nzvI419DjXCOPcyGPc8bjXILHuUSPc0ke55I9zqV4nEv1OJfmcS7d41xjj3NNPM419TjXzONcc49zTvKLj/rzJ08oWob/+ulFbsdOwBe5OdqjYDPyRW4nidiMfJFbIRGbkS9yixaxGfkitxgRm5EvcissYjPyRW6xIjYjX+QWJ2Iz8kVuRURsRr7IraiIzcgXuRUTsRn5IrfiIjYjX+RWQsRm5IvcSorYjHyRWykRm5EvcistYjPyRW5lRGxGvsitrIjNyBe5lROxGfkit/IiNiNf5HayiM3IF7mdImIz8kVuFURsRr7IraKIzcgXuZ0qYjPyRW6VRGxGvsitsojNyBe5VRGxGfkit6oiNiNf5FZNxGbki9yqk2w+KZ/NoYJ9TI24gvsvJ9f5pBlmbIAPYJp4ETwCH+g0NUVsBj4gamqJ2Ax84NTUFrEZ+ACrOU3EZuADseZ0EZuBD9iaOiI2Ax/YNXVFbAY+AGzqidgMfKDYnCFiM/ABZVNfxGbgA8+mgYjNwAeozZkiNgMfyDZnidgMfMDbNBSxGfjAuGkkYjPwAXQTErEZ+EC7MSI2Ax+QNwkiNgMfuDeJIjYDH+A3SSI2A18IYJJFbAa+YMCkiNgMfGGBSRWxGfgCBJMmYjPwhQomXcRm4AsaTGMRm4EvfDBNRGwGvkDCNBWxGfhCCtNMxGbgCy5Mc6DNzo9/OSM6fL2TXDZHuc65fREq2Cf48S/QHIMf/8LMMfjxL8wcgx//wswx+PEvzByDH//CzDH48S/MHIMf/8LMMfjxL8wcgx//wswx+PEvzByDH//CzDH48S/MHIMf/8LMMfjxL8wcgx//Qlw3+PEvv88x+PEvzByDH//CzDH48S/MHIMf/8LMMfjxL8wcgx//wswx+PEvzByDH//CzDH48S/MHIMf/8LMMfjxL8wcgx//wswx+PEvzByDH//CzFHlx7+I1w6d5PJt3jVbxkVFtbKjtR1t7GhrRzs72tvRwY6OdnSyo7MdXew4246udnSzo7sdPew4x46edvSy41w7etvRx46+dpxnx/l29LOjvx0X2HGhHQPsGGjHRXZk2JFpR5Yd2Xbk2JFrxyA7LrbjEjsutWOwHZfZcbkdQ+wYascVdlxpxzA7httxlR1X2zHCjpF2jLLjGjtG2zHGjmvtuM6OsXaMi4v684/stPT44Z1WHudae5xr43Gurce5dh7n2nuc6+BxrqPHuU4e5zp7nOvice5sj3NdPc518zjX3eNcD49z53ic6+lxrpfHuXM9zvX2ONfH41xfj3PneZw73+NcP49z/T3OXeBx7kKPcwM8zg30ODfK49w1HudGe5wb43HuWo9z13mcG+txblz4nPtTKPy3Zfivn35wqqXITfrIH5xqJWIz8genWovYjPzBqTYiNiN/cKqtiM3IH5xqJ2Iz8gen2ovYjPzBqQ4iNiN/cKqjiM3IH5zqJGIz8genOovYjPzBqS4iNiN/cOpsEZuRPzjVVcRm5A9OdROxGfmDU91FbEb+4FQPEZuRPzh1jojNyB+c6iliM/IHp3qJ2Iz8walzRWxG/uBUbxGbkT841UfEZuQPTvUVsRn5g1PnidiM/MGp80VsRv7gVD8Rm5E/ONVfxGbkD05dIGIz8genLhSxGfmDUwNEbEb+4NRAks3om4Iuiiu4/7x+cAo9zwwRf2aKzDNLZJ7ZIvPMEZlnrsg8B4nM82KReV4iMs9LReY5WGSel4nM83KReQ4RmedQkXleITLPK0XmOUxknsNF5nmVyDyvFpnnCJF5jiTNM6ag8zR//jqqYPP809WuKajNrquNBqwr/Hv9rapPYxH6s9VjEJgJX+1aDP7+dbXrgLFI9ncsQnlWj8Xx14wDXguIZeOORcHW7kLG+XGC4lF/rKlSYkPGdqggH/9ihvGw5b9zljve18f9/veG/A8FOv/HtnznnH8oPioASoE3ixUSaj5A/0ObE8I2m+uB/rsBSFpWLAqBY4H033iPa2WGsrKTTWZKdqrJyUhOy8pKTzQmISMlIyUzIS03JzPZpCWn2WtmZSSk2f9cQkaWyQllpOQ4IlIs6o9i3P1BF+jjgQnWPd8JccQJOxdHX/dGIBhYdt8Y94eDQdf1nCsimThzRRE277rIGN0EBn6eoDvXrRn1+89URaoSHAUU+GuAAj8aKCpj4jiiAuKTZyU4MczXSfkrwYkeleAkZiUYnuQYYPUxEUjGSa5rJWQn54TS0zLTEjIzElMzkxIz09Mz7HVTjEnLzU4IZScl5CablJSs9Jz0XJOYm5mck5GSnJGekv0v9cxOEqk+kP67WbT6uJlUfdwSR5zwLYTqY7LPqw/H7ski1cek8FzR1QcyRlNI1ceUSFYfv39wL9E3sPsl/6XGkPtNw7rO+FEI96eA1/asPm4N8/W2/NXHrR7Vx20RqD4UgFLgh1P8vg7lAeiCVoK3AhPjbcCWobFIJYj031TRSnAqqRKcFkec8DRCJXi7zytBx+7bRSrB28JzRVeCyBjdQaoE7zgOlWAKUOBTgQKfBqwE0wUrwelhvs7IXwlO96gEZ0SgElQASoEfRxepBNOBleB0YGKcAawEm4pUgkj/3SlaCd5JqgTviiNO+C5CJTjT55WgY/dMkUpwRniu6EoQGaNZpEpw1nGoBBsDBb4JUOCbAivBZoKV4N1hvt6TvxK826MSvCcC96Y1A1YfdwPJeI+bjJlp2elJKRk56WmpVi6TQ8mpqcnJSfZfS8tKyM5KT87OyUrOSEvPyknNys7OSjIpduMyOSkUykpJNyYzqZJI9YH032zR6mM2qfqYE0ec8BxC9XGvz6sPx+57RaqPe8JzRVcfyBjdR6o+7jsO1UdzYPXRAlh9tARWH60Eq4+5Yb7Oy199zPWoPuZFYB1KASgFfv2lyDpUK2AlOBeYGOcB16Gai1SCSP/dL1oJ3k+qBB+II074AUIlON/nlaBj93yRSnBeeK7oShAZowWkSnDBcagEWwMFvg1Q4NsCK8F2gpXgg2G+PpS/EnzQoxJ8KAKVoAJQCvzCe5FKsB2wEnwQmBgfAlaCLUUqQaT/HhatBB8mVYIL44gTXkioBB/xeSXo2P2ISCX4UHiu6EoQGaNHSZXgo8ehEmwPFPgOQIHvCKwEOwlWgovCfF2cvxJc5FEJLo7AjmQnYPWxCEjGxa5rmcTU1MSE1OyE3ISctMz0pPSEpOzktOzsJJOZk5wZSjChhNyMRJOZZjcprXJmZucmm6ysnKTkxPSM9LSE9Goi1QfSf4+JVh+PkaqPx+OIE36cUH0s8Xn14di9RKT6WByeK7r6QMZoKan6WHocqo/OwOqjC7D6OBtYfXQVrD6eCPP1yfzVxxMe1ceTEViHUgBKgX9gU2QdqiuwEnwCmBifBK5DtRapBJH+WyZaCS4jVYLL44gTXk6oBJ/yeSXo2P2USCX4ZHiu6EoQGaOnSZXg08ehEuwGFPjuQIHvAawEzxGsBFeE+boyfyW4wqMSXBmBSlABKAUldluRSvAcYCW4ApgYVwIrwbYilSDSf8+IVoLPkCrBZ+OIE36WUAk+5/NK0LH7OZFKcGV4ruhKEBmjVaRKcFW4EnR/0P59HjD3tPBf5jxfiOMIAXqeqwHzTMkIpeekpKQy57kGMM/MzJTUjJy0ZOY8XwTMMzErJSc3MTWBOc+XAPPMSE7KzU1OzGDOcy1gnskmlJOckJrLnOc6wDzTM0PJKWlpWcx5vgyYp8lNS8xOz8hkzvMVRNwzc2wZatKduZ0c9eem070V4b4pwn2rrPsBKvej3O4X/DjHt7mOn3cdv1CA40mu4xtcx6tdx2tcxy+6jl9yHa91Ha9zHb/sOn4lfPyq/bvejtfseN2ON+zYYMebdrwV99eVHXSd9xZQM/Oa17ftNTfa8Y4d74ZXJdw1i/P/F4n687mNHufe8Tj3bvic+4NewHgLWPe9DbhW3m80bQTOqz2paY7OF4uC2OzE4h2I/36P67vARQek/9gcf5PA8U32mpvteM+O9z04vsmDu5s9zr3nce79CHD8TSCXNgE5vhk4r44iHH8PyPH3gRzvKMTxDQSOf2CvucWOD+34yIPjH3hwd4vHuQ89zn0UAY5vAHLpAyDHtwDn1VmE4x8COf4RkOOdhTj+BoHjH9trbrXjEzs+9eD4xx7c3epx7hOPc59GgONvALn0MZDjW4HzOluE458AOf4pkONnC3H8dQLHt9lrbrfjMzs+9+D4Ng/ubvc495nHuc8jwPHXgVzaBuT4duC8uolw/DMgxz8HcrybEMdfI3B8h73mTju+sONLD47v8ODuTo9zX3ic+zICHH8NyKUdQI7vBM6rhwjHvwBy/Esgx3sIcXw9geO77DV32/GVHV97cHyXB3d3e5z7yuPc1xHg+Hogl3YBOb4bOK+eIhz/Csjxr4Ec7ynE8VcJHN9jr7nXjm/s+NaD43s8uLvX49w3Hue+jQDHXwVyaQ+Q43uB8zpXhOPfADn+LZDjSP85uM7D+anRfxxXch1Xdh1XcR1XdR1Xcx1Xdx3XcB3Hu45ruo5ruY5ru45Pcx2f7jqu4zqu6zqu5zo+w3Vc33XcwHV8puv4LNdxQ9dxI9dxyHVsXMcJruNE13GS6zjZdZziOk51Hae5jtNdx41dx01cx01dx81cx81dxy1cxy1dx61cx61dx21cx21dx+1cx+1dxx1cxx1dx51cx51dx11cx2e7jru6jru5jru7jnu4js9xHfd0HfdyHZ/rOu7tOu7jOu7rOl7uOn7WdbzGdfyK63iD6/hd1/EW1/GnruOdruOvXcf7Xcc/uo6PuI5PivnjOM51XNJ1XN51XMl1XMN1fLrruIHr2LiOU13HzVzHbVzHnVzH3V3HvV3H/V3HGa7jQa7jy13Hw13H17iOx7mOb3IdT3Ed3+E6nuU6vs91vMB1/KjreKnr+GnX8SrX8Uuu4/Wu47dcx5tdxx+5jre7jr90He91HX/vOj7kOv7NdRxd+I/joq7j0q7jU1zHVVzHNV3HdV3HZ7mOv3XVPO76x10fueunr13H7p7I3TO5e6ovXcfudRL3Oop7neVz17F77dS9tupee/3UdezeT3Hvt7j3Yz5yHbv3WN17sO492vddx+77Ltz3Zbjv23jXdey+F8t9r1bevVz7nFrV9Tkp/Ldl+G+oYB+zD1i/RfKBl+ZR2Fon77M/jjhh5+Lo634HDCDL7u9cIAZdl/pE2ZXROJ9+DyzwveJT0Pm1CMcH7cMWwDkeiMPiBo1xJ8YH4vCxORiHTXJ5CxbOdeOjfn/MPTY88n/8nLCZ82wmMs+mIvN059JQAT9e8yvwO7Cjfl+sQ+e/GOC1WpJiHYW1+U+F1A+ufAgHFVIQnCTo1CdBEvxjnkESxM4zSIInThIs5Lrmj+HG5ycnGTI6vxYeQUN0BKhrfQfsftwV7I/hCtb9QYP3R2BnfYjcBYYK9jF5XSBqq4yNpYJe62efx8PBy8+EjvIXUkf5i4uPKt314TiOoKDzMRL3R3yOeycmRwix/pWE+1+JuGflgN98vprmxP83gt1HSRg4SsQAiw99qp6YGOjr81uM8uZ5DJingbE2fatyOHSMyCFnMYORR539WSSWGBxy5oi2+6QiHAw4143/Dxgo6JzzFiKiwT5mLXAU1N5CPsemsyDG4GS0ACejCZyMIXEypggvL/9Iqm8LC2CgMAEDsSQMxBIwkJ2clGQyQ9kHSPVtHMkXcUQ+ODmRsc5RRIAPRQh8KErCQFEXBvI+6Pq/GG7uEvV/MTKvviPwqjgJX8X/Br5CBfsYJL7cfiioT0uQfFqCiC9nU59Rx5T0ed4+iWR3qRO0ry5Nwn5pIvad+Bci+KKMzzHQlIT9sj63+ydSz1buBO3by5M4X57IeVb/ejLJFyeTtZ/Rs50ioP0Muyv41G72ekVFEvYrErF/gKT9p/oc+47dPxAwUOkEXaepTMJ+5SJ/POUSqccS20Rhbcn7VClCnHCVIvjrVgUuCrDsrlrkDweDrkt9LLEE0KfVgAtAXvEp8A9BhuOD9mFb4Byr+zxhOzGuTkjYNUgJu0aRyD+WiEzYzHm2FplnK5F5liBzt6Acaxfl/ydy2pFiHYW1+U+FVHwR4mOJSEHw+glyRkV/APhuhtzfPxH7ie6a4QKu1r/fhBP+WzMcZfe5WuRW+Egc7Nb/f/80dE1gxVerCDbA6IznkKcmqSIHxzuNtQxU2+cVpROj2oSK8jRSRXkaeRn8FIIvThdYBqpAsLuOgN2nEuyuK2B3JYLd9YB2O1VtIzuuD1/P4ZCDJ+evswTu/Bqp42fnv1k5/D0Y//+OvI+K/p0B5EJ0mAv5P6jrs3x7RhH/z7E+eo6M5SzGkl8/8vOCiOahPsHu/qTnBdGvh68PbBQbALcGgLgxyFiQk6TJu96JmCQb+D1J5ql4IcJ1W4JIeCapIz6T2BEr+PWsoNIyZwkkkYZ+TyLO9RiV1gCBSqshwe6BIpVWQ2AyagSstIC4MQODSksiSTY6QSutBGRFECJVWiG9SgvqVxNUWsYIJJEEdhJBVBwJhIojU6TiSACSMtGnazuZQcUhkSwST9CKIxGpjEmkiiNJr+KA+jU5qDhMskASSVGoOJxJot66kff0IPD+0D85saD2puoQh6a+CsRJPUHVNwmpEmkk9U3TU1+oX9MD9TXpAkmksYL6NiZsIzYGgr1JoJgSYG9ygipmMjKzNyUpZlM9xYT6tVmgmKaZQBJp7nfFdFac20X5++3m7YD2tvD5w7tOkmhO2LHI9vmvdjh2tyDYnSOyU9McKA4tgWtFQNyYnGCnRkK0Wp6glW8KskJrRap8W+lVvlC/tg4qX9NaIIm0UUgi8YSK42KBu3DbEOy+RKTSagNMRm2BlRYQN+aSoNKSSJJtT9BKKxVZEbQjVVrt9CotqF/bB5WWaS+QRDr4PYk4L8xjPO90mUCl1YFg9+UilVYHYDLqCKy0gLgxlweVlkSS7Oj3JMl6L1ynIlgAMSqhToQk2ZlUFXYu8sebhp3XBQVvGv5jnq1F5tlKZJ4limjMswVpnlHYef7pBbBdivz+92wn96Ad4rx+3nldfP72DvFqe9S1qgKFwZ0gu7ja5rwPuM01XYCVZVefC2TezxmgfyeWhaWCXqubz+Ph4KUboWDpTipYursKlki8Ffxn10sUC3rd8Eujs6I8PgW8tudbwXuEReGcIlF/fgN4jyJ/fSv4OcT1wZ/jOG8F7wEk6jlFsAFGE8ohaV5AgbFh3P6U8TOp++tZxNd2GydGPQnJtBcpmfYict6Jf0mCL871OQYcu0sR7O4tYHcZgt19BOwuS7C7r4Dd5Qh2nwe029kCcIyvF76ekzscHjl/nR8Dd96Q7eDL8bXz33V+LPjkIv//va2bpUvng/dUvZZLUNdn+fb8Iv6fYz+/bxc4S8KMLvQKn++pOjb3I9h9pcieaj9gA9cfuNICxI25sqpMkqTtqSokyf5+T5J5Kl6IcN2WIBJeQOpULyB2qgp+vTCotMyFAklkgN+TiHM9RqV1lUClNYBg99UildYAYDIaCKy0gLgxVweVlkSSHHiCVloJyIrgIlKldZFepQX1a0ZQaZkMgSSSyU4iiIojk1BxjBKpODKBpMzy6drOqKDikEgWWSdoxZGIVMZsUsWRrVdxQP2aE1QcJkcgieT6PYm0juKs7YwWWNvJJdg9RqTSygUmo0HASguIGzMmqLQkkuSgE7TSSkJWBBeTKq2L9SotqF8vCSotc4lAErlUYW3nUsKW8aVAsA/WATtNMRXAPvgEVcxkZGa/jKSYl+kpJtSvlweKaS4XSCJD/J5EnIfqGWsTYwXWJoYQ7B4nsjYxBJiMhgLXJoC4MeOCtQmJJDn0BK20UpAVwRWkSusKvUoL6tcrg0rLXCmQRIb5PYm0iuJUWuMFKq1hBLsniFRaw4DJaDiw0gLixkwIKi2JJDn8BK20UpEVwVWkSusqvUoL6terg0rLXC2QREb4PYmcTVrTmihQaY0g2D1JpNIaAUxGI4GVFhA3ZlJQaUkkyZEnaKWVhqwIRpEqrVF6lRbUr9cElZa5RiCJjPZ7EilBqrQmC1Raowl2TxGptEYDk9EYYKUFxI2ZElRaEklyzAlaaaUjK4JrSZXWtXqVFtSv1wWVlrlOIImM9XsS6UKqtKYKVFpjCXZPE6m0xgKT0ThgpQXEjZkWVFoSSXKc35Mk6/cNri+CBRCjErqekCRvIFWFNxCrwmpFOD8DO55AUOdTCDxP5I8kTfA57p2YTCDE+kYS7m8k4p71g1E3gXGPttuJ/02MzV4SBiYSMcDiw/SqJyYGZpCaBPSP7E0C5mlgrA3Sf24OTQpzSHVFxPlNEb/P8WZSvQMn6S1A8KsC6pYi/p/jZBVATcFNNEEVUFMEAHUrco6qgbos2v9zvM3v60alSWsGUwV6p6mMxXVS7zSNvJt4G8EXtwtg4HaC3XeQMHAHEQMsPswU6J8ZGJgl0j9PB7YQwFibWaT+ebqLQ1H/gUsFXjvB+TRJtTibIVBF38lqy8C35ZgJwI2NuwJwmrsEwDnT752D0zX0ISjnbJ9XDE61PJNg9xyRimEWsGIAxtrMEag0ZxFwczep27jbNde8D1jYUpDCdk9wv6m5R0DYZotUXalIcM4JwGnmCIDzXhFwJiPBeR/O6ERVcN4nAM65fm8JypM2E+YJLCTPI9h9P6m0u5+8mTCX4IsHBDDwAMHu+SQMzCdvJjD4MFegxWNgYJ7I0sAC4NIAMNZmHmkzYYHHZoKfW+QHg0LPPChQ6D3k90LvZFKh97CAyD9MsHshSeQXkgu9hwi+eEQAA48Q7H6UhIFHyYUegw/zBQo9BgYWiBR6i4CFHjDWZgGp0FvEL/QykIXe4mC52SwWKPQeE1luzkSC8/EAnOZxAXAuEQFnFhKcSwNwmqUC4HxCBJxQWX8yWL8xTwqAc5nf12+c3n0ZoX9ZLtC7LyfY/RSpd39KrO94Ori52DwtkKBWnIh9x8oAnGalADif0QCnCSHB+WzQd5hnBcD5nAg4oc8MrQrAaVYJgPN5EVnPRYLzhaApNi8IgHO1QlO8mtAcrhFoitcQ7H6R1BS/SG+KsaXdS0GCMi8JJKi1CglqLYGo6wQS1DqC3S+TEtTL/ASVhExQrwTlvXlFIEG9KtJ7Qh9OWx+A06wXAOdrIuCE3lD/egBO87oAON8QASdU1jcEfYfZIADONxX6jjcJ9fdbAn3HWwS73yb1HW+L9R0bgw1Zs1EgQb1zIvYd7wbgNO8KgHOTCDih91ltDvoOs1kAnO+JgBN6n9X7ATjN+wLg/EAEnOlIcG4JmmKzRQCcHyo0xR8SmsOPBJrijwh2f0xqij/mN8XQ0m5rkKDMVoEE9YlCgvqEQNRPBRLUpwS7t5ES1DZ+gspBJqjtQXlvtgskqM9EynvozcCfB+A0nwuAc4cGOBOgN4LuDMBpdgqA8wuRzAmV9S+DvsN8KQDOXQp9xy5C/b1boO/YTbD7K1Lf8ZVY3/F1sCFrvhZIUHtOxL5jbwBOs1cAnN+I9B3Q+6y+DfoO860AOPeJgBN6n9X+AJxmvwA4vxMBZyISnN8HTbH5XgCcBxSa4gOE5vCgQFN8kGD3D6Sm+Ad6U4wt7X4MEpT5USBB/aSQoH4iEPWQQII6RLD7Z1KC+rkI79c8fo6LijoSh/fFLz7HgPNLRr8QMHBYAPuHCXYfIWH/CBH7Tv67nuCLXwUw8CvB7t9IGPiNiAEWHx4W+DUjBgYWivya0VEcVg0w1mYh6deMjoY55HxvFPXXDzpm8Lcdxvl/jseQeV81ULcIdGZRRYNAmSkCgTopCFTIXBbt/zkWKgqeI6PfcyaJrneii/q/zosm2B1TlFOnONeNJ4G0ovVFN0LNW1gAA4UJGIglYSC2KLffY/BhkUC/x8DAYpF+Lw6HVQOMtVlM6vfiimr3ezMEqtMiRTnYh5O0KG6iyaqAKlrU/3MsplBFFyOoyBKfq2ddUuW4VEQ9iwPVExhrs1Sg6ipO4EsJUuVdwjXXvA967iVxc09RFaOSAmJUSqW6KY2baKoqoEoLAKqMQnVThpCtywqsD5Ul2F2OpFLliOtDlUmVXnkBDJQnYOBkEgZOJq8RMviwTKBaZWBguUiXcwqwywHG2iwnrRGe4uJQ1H/gUkF9WgHn0zTV4qyCQHFWUaXaPxU30XRVQJ0qAKhKKoCqjJtohiqgKgsAqooKoKriJpqpCqiqAoCqprAeUY1Qj1cX6EWrE+yuQepFa0Sgjo7HzT1LNanECySVmioqVQs30WxVQNUSAFRtFUCdhptojiqgThMA1OkqgKqDm2iuKqDqCACqrkIdXZdQT9YTqKPrEew+g1RHn1GU/SIWA323d32gH1QTVH2BBNWApXhgcBokOM8MwGnOFADnWSLgTECCs2EATtNQAJyNRMAJlfUQzuhEVXCGBMBpFPoOQ6i/EwT6jgSC3YmkviNRrO9IwvkhSTVBJQkkqOQTse9ICcBpUgTAmSoCzhQkONOCvsOkCYAzXQSc0Pc6Nw76DtNYAJxNFPqOJoT6u6lA39GUYHczUt/RjN93pCETVPNAPU1zgQTVQkQ905HgbBmA07QUAGcrEXBmIMHZOgCnaS0AzjYi4ITKetug7zBtBcDZTqHvaEeov9sL9B3tCXZ3IPUdHcT6jo7BkrLpKJCgOp2IfUfnAJymswA4u4iAMwcJzrODvsOcLQDOriLgzEKCs1vQd5huAuDsrtB3dCfU3z0E+o4eBLvPIfUd59D7jgTofVY9A/U0PQUSVC8N9UyA3md1bgBOc64AOHuLgBP6fEefAJymjwA4+4qAEyrr5wV9hzlPAJznK/Qd5xPq734CfUc/gt39SX1Hf7G+44JgSdlcIJCgLjwR+44BATjNAAFwDhQBJ/T5jouCvsNcJADODBFwQp/vyAz6DpMpAM4shb4ji1B/Zwv0HdkEu3NIfUcOv++A3meVG6inyRVIUINE1BN6n9XFATjNxQLgvEQEnNDnOy4NwGkuFQDnYBFwQmX9sqDvMJcJgPNyhb7jckL9PUSg7xhCsHsoqe8YKtZ3XBEsKZsrBBLUlSdi3zEsAKcZJgDO4SLghD7fcVXQd5irBMB5tQg4oc93jAj6DjNCAJwjFfqOkYT6e5RA3zGKYPc1pL7jGnrfkQi9z2p0oJ5mtECCGqOhnonQ+6yuDcBprhUA53Ui4IQ+3zE2AKcZKwDOcSLghMr69UHfYa4XAOcNCn3HDYT6e7xA3zGeYPcEUt8xQazvuDFYUjY3CiSom07EvmNiAE4zUQCck0TACX2+4+ag7zA3C4DzFhFwQp/vmBz0HWayADinKPQdUwj1960CfcetBLtvI/Udt/H7Duh9VlMD9TRTBRLUNBH1hN5ndXsATnO7ADjvEAEn9PmO6QE4zXQBcM4QASdU1u8M+g5zpwA471LoO+4i1N8zBfqOmQS7Z5H6jllifcfdwZKyuVsgQd1zIvYdswNwmtkC4JwjAk7o8x33Bn2HuVcAnPeJgBP6fMfcoO8wcwXAOU+h75hHqL/vF+g77ifY/QCp73iA3nckQe+zmh+op5kvkKAWaKhnEvQ+qwcDcJoHBcD5kAg4oc93PByA0zwsAM6FIuCEyvojQd9hHhEA56MKfcejhPp7kUDfsYhg92JS37FYrO94LFhSNo8JJKjHT8S+Y0kATrNEAJxLRcAJfb7jiaDvME8IgPNJEXBCn+9YFvQdZpkAOJcr9B3LCfX3UwJ9x1MEu58m9R1P8/sO6H1WKwL1NCsEEtRKEfWE3mf1TABO84wAOJ8VASf0+Y7nAnCa5wTAuUoEnFBZfz7oO8zzAuB8QaHveIFQf68W6DtWE+xeQ+o71oj1HS8GS8rmRYEE9dKJ2HesDcBp1gqAc50IOKHPd7wc9B3mZQFwviICTujzHa8GfYd5VQCc6xX6jvWE+vs1gb7jNYLdr5P6jtfpfUcy9D6rNwL1NG8IJKgNGuqZDL3P6s0AnOZNAXC+JQJO6PMdbwfgNG8LgHOjCDihsv5O0HeYdwTA+a5C3/Euof7eJNB3bCLYvZnUd2wW6zveC5aUzXsCCer9E7Hv+CAAp/lAAJxbRMAJfb7jw6DvMB8KgPMjEXBCn+/4OOg7zMcC4Nyq0HdsJdTfnwj0HZ8Q7P6U1Hd8yu87oPdZbQvU02wTSFDbRdQTep/VZwE4zWcC4PxcBJzQ5zt2BOA0OwTAuVMEnFBZ/yLoO8wXAuD8UqHv+JJQf+8S6Dt2EezeTeo7dov1HV8FS8rmK4EE9fWJ2HfsCcBp9giAc68IOKHPd3wT9B3mGwFwfisCTujzHfuCvsPsEwDnfoW+Yz+h/v5OoO/4jmD396S+43t635ECvc/qQKCe5oBAgjqooZ4p0PusfgjAaX4QAOePIuCEPt/xUwBO85MAOA+JgBMq6z8HfYf5WQCcvyj0Hb8Q6u/DAn3HYYLdR0h9xxGxvuPXYEnZ/CqQoH47EfuOowE4zVEBcB4TASf0+Y6oYkHfgfQBa44nFdMAJ/T5jkI4o2X7jkIC4IxGz5HRdziTRNffMWDDGX1HDMHuwkC73X2Hc934qD9/wAkKep9VbKCeJlYgQcWJqCf0PqsiAThNEQFwFhUBJ/T5jmIBOE0xAXAWFwEnVNZLBH2HKSEAzpIKfUdJQv1dSqDvKEWwuzSp7ygt1neUwflBdkm5jECCKnsi9h3lAnCacgLgLC8CTujzHScHfYc5WQCcp4iAE/p8R4Wg7zAVBMBZUaHvqEiov08V6DtOJdhdidR3VKL3HanQ+6wqB+ppKgskqCoa6pkKvc+qagBOU1UAnNVEwAl9vqN6AE5TXQCcNUTACZX1+KDvMPEC4Kyp0HfUJNTftQT6jloEu2uT+o7aYn3HacGSsjlNIEGdfiL2HXUCcJo6AuCsKwJO6PMd9YK+w9QTAOcZIuCEPt9RP+g7TH0BcDZQ6DsaEOrvMwX6jjMJdp9F6jvO4vcd0PusGgbqaRoKJKhGIuoJvc8qFIDThATAaUTACX2+IyEAp0kQAGeiCDihsp4U9B0mSQCcyQp9RzKh/k4R6DtSCHankvqOVLG+Iy1YUjZpAgkq/UTsOxoH4DSNBcDZRASc0Oc7mgZ9h2kqAM5mIuCEPt/RPOg7THMBcLZQ6DtaEOrvlgJ9R0uC3a1IfUcrV9/BwECnInhftBbAQGsCBtqQMNCGiIEDcVFRR+Lwvmjrcwx0sxhoS8BAOwHstyPY3Z6E/fZE7LPywIqqJyYGVlbFF2ZRYSwg59kBh1UDjLVB+s/NoQ4ea5don3YE+nQ60KczSD7tSMxLJSw/qxLqsk6kHN3pb+ArVLCPQeLL7YeC+rQzyaedyXX/uQR8Pedz3XNqvpsJdq8S0b0uQA4BY21W+Rw3Dl96E3CzWoAvkwl2rxHhy9lAvgBjbdYI4OZWAm7WiuCmq0/zrIr/ugH9NxPov1mkXqIbsdYrTeolupPq3u4R6CWQ+OoO7CV6kHzag4gvJ9ffScDXOT5fR3U41Ydg98sCa4ezCHa/IqJNPYG5Axhr8wpJm3q61okZfVVfApZeE6iPZxPsfl2EQ72AHALG2rwusA5xHgE3bwrw5V6C3W+J8OVcIF+AsTYq/usN9N9coP/mkTS7N7HeL0/qJ/uQep8+EegnkfjqA+wn+5J82jcC+8nnAX06H8jZBSTOnkfk7Mkkzp5Pwtf5EeAsEl/nAznbj+TTfuQ1oMcI+OovcA/hEoLdFwjY/QTB7gsF7p1cTrB7AInzA8icX0HwxUAB7D9DsPsiAbufI9idIWD38wS7MwVy3RqC3VmkXJdFvk98HcEX2SRfZJPz/qsEX+QI5IHXCHbnCtj9BsHuQQL57y2C3ReTOH8xmfPvEHxxiQD2NxHsvlTA7vcIdg8WsPsDgt2XCeS6jwh2X07KdZeTa71PCb4YQvLFEHLe/4zgi6ECeWAHwe4rBOz+gmD3lQL5bzfB7mEkzg8jc34PwRfDBbD/DcHuqwTs3kew+2oBu78j2D1CINcdJNg9kpTrRpJrvUMEX4wi+WJUBO67uAa4L/4w8L6LhaT7Lq4h4su55+IXAr5Gk/A1OgL3XSDxNRp438UYkk/HkJ/jP0bA1zs+vx/4dGtzN4Ld74rcz3otkEPAWJt3Be6fjyqKx817Pre7Dokv74vw5TogX4CxNu8L8OUkAl8+FMHN2GK+zI1GxX/jgP5bBPTfYlIvMY5Y61Uk3cN9PanuvT4CvQQSX9cDe4kbSD69gdxLFCHk+vECz/HXJfDqY4Hn+IsT4r1VRJsmAHMHMNZmK0mbJpCf4y9FwNI2n3OoHqmv2i7CoRuBHALG2qj47yag/5YB/beclINuItYvlUn18URSLTcxAvUxEl8TgfXxJJJPJ5Hr44oEjbvZ5/WxY3clgt23CNhdhWD3ZIH7A6oT7J5C4vwUMudrEnxxqwD2axPsvk3A7tMJdk8V4Hw9gt3TSJyfRuZ8A4IvbhfA/lkEu+8QsLsRwe7pApxPINg9g8T5GWTOJxN8cacA9lMJdt8lYHc6we6ZApxvSrB7Fonzs8icb0Hwxd0C2G9FsPseAbvbEOyeLcD59gS755A4P4fM+U4EX9wrgP0uBLvvE7C7K8HuuQKc70Gwex6J8/PInO9F8MX9AtjvTbD7AQG7+xLsni/A+X4EuxeQOL+AzPkLCb54UAD7Awl2PyRgdwbB7ocFOJ9NsHshifMLyZwfRPDFIwLYv4Rg96MCdg8m2L1IgPNDCHYvJnF+MZnzVxJ88ZgA9ocT7H5cwO6rCXYvEeD8KILdS0mcX0rm/BiCL54QwP51BLufFLB7HMHuZQKcH0+wezmJ88vJnL+J4IunBLA/iWD30wJ230Kwe4UA528l2L2SxPmVZM5PI/jiGQHs30Gw+1kBu2cQ7H5OgPMzCXavInF+FZnz9xB88bwA9ucQ7H5BwO77CHavFuD8/QS715A4v4bM+QUEX7wogP2HCHa/JGD3QoLdawU4v4hg9zoS59eROf84wRcvC2B/KcHuVwTsfpJg96sCnH+KYPd6EufXkzm/kuCL1wSw/yzB7tcF7F5FsPsNAc6vJti9gcT5DWTOv0TwxZsC2F9HsPstAbtfIdj9tgDnXyPYvZHE+Y1kzm8g+OIdAey/RbD7XQG7NxLs3iTA+U0EuzeTOL+ZzPn3Ge/VF8D+FoLd7wvY/RHB7g8EOP8Jwe4tJM5vIXN+O+O3AQSw/znB7o8E7N5JsPtjAc7vYrwnm8T5rWTOf03wxScC2N9LsPtTAbu/ZbzXW4Dz3xHs3k7i/HYy5w8SfPGZAPZ/JNj9uYDdhwh27xDg/GGC3TtJnN9J5vxvBF98IYD9YwS7vxSw+6RieLt3CXA+hmD3bhLnd5M5H0fwxVcC2C9KsPtrAbuLE+zeI8D5UgS795I4v5fM+bIEX3wjgP3yBLu/FbD7FILd+wQ4fyrB7v0kzu8nc74KwRffCWC/GsHu7wXsrkGw+4AA52sR7D5I4vxBMudPJ/jiBwHs1yXY/aOA3WcQ7P5JgPNnEuw+ROL8ITLnGxF88bMA9g3B7l8E7E4k2H1YgPMpBLuPkDh/hMz5dIIvfhXAfhOC3b8J2N2MYPdRAc63JNh9jMT5Yy7O533QvyUdVRzn3xXA35JeSfotacfe+PB10fhyfke6LQFfJxXn+OKk4v8dX6GCfQwSX24/FNSnhUg+LRT2aWE7ijjfXVg7Ncr7g5lHciLnuinJnOumJmldNyWddN0c0nVTOddNCJHilsm5biJrvtla/k0xJD+Q8g7NDymk6yZrXZfGYzX8svI6SzcT/lW75bs2upY9CXetUP45wifbAThZp3Ar6uFgxrw7F8M7+V+VZ7EIGXBGFLaKzvtEFydO2Lk4+roxwNaEZXdM8T8cDLrun1J9IfCc3ewoqE8LA9tQr/gUdH71w/FB+7A+cI6xxbG4QWPciXFscXxs4khLBXGupYLY8Mj/8XPCZs6znsg864rMszN5ab6gHGtgrxEThc9/McBrNSDFOgpr858KqSLFiWU3UhCcJFjcBQD3Bz1vxNpv7u8fRiBN3oHbF0XDxVux4mGH5KlI0XCE3eeKRWBhv1DBK96EMPtNUWD1XAwcXHSmc0hTlFSJg4mSVohUURUnVVTFyZt7pxchPOBa1dcY+Nem+bWETc2dVTlqit4gLwHsHIGxNjt9jhuHL3UIfNklwJfrGA+HivClJJAvwFib3QK4Gct4sFIEN6V8mmf3COBmPAE3pX2+2ufoSz2CvnwjEO8bGQ+hiuSJMsA8AYy1+VYANzcTcFPW53nCsfsWgt3lBOyeTLC7vIDdtxLsPlnA7tsIdp8iYPdUgt0VBOy+nWB3RQG77yDYfaqA3dMJdlcSsPtOgt2VBey+i2B3FQG7ZxLsripg990Eu6sJ2H0Pwe7qAnbPJthdQ8Duewl2xwvYfR/B7poCds8l2F1LwO77CXbXFrD7AYLdpwnYPZ9g9+kCdj9IsLuOgN0PEeyuK2D3wwS76wnY/QjB7jME7H6UYHd9AbsXEexuIGD3YwS7zxSw+3GC3WcJ2L2EYHdDAbufINjdSMDuJwl2hwTsXkaw2wjY/RTB7gQBu58m2J0oYPcKgt1JAnY/Q7A7WcDuZwl2pwjY/RzB7lQBu58n2J0mYPcLBLvTBexeTbC7sYDdLxLsbiJg90sEu5sK2L2WYHczAbtfJtjdXMDuVwh2txCw+1WC3S0F7H6NYHcrAbtfJ9jdWsDuNwh2txGw+02C3W0F7H6LYHc7AbvfJtjdXsDudwh2dxCw+12C3R0F7N5EsLuTgN3vEezuLGD3+wS7uwjY/QHB7rMF7P6QYHdXAbs/ItjdTcDujwl2dxew+xOC3T0E7P6UYPc5AnZvI9jdU8Duzwh29xKw+3OC3ecK2L2DYHdvAbu/INjdR8DuLwl29xWwexfB7vME7P6KYPf5AnZ/TbC7n4Ddewh29xew+xuC3RcI2P0twe4LBezeR7B7gIDd3xHsHihg9/cEuy8SsPsAwe4MAbt/INidKWD3jwS7swTs/olgd7aA3T8T7M4RsPsXgt25AnYfJtg9SMDuXwl2Xyxg928Euy8RsPsowe5LgXY7v/Lk/Czf9eHrOb/Z4LyH3nmn+A127s67rCfYv867gyfZv847a533tzrvMp1ivzvv9nTec+m883Ga/e68A9F5H6DzbrwZ9rvzrjjnvWnOO8Rm2e/OO7Wc90s571qaY7877x5y3sPjvJNmnv3uvKPFeV+J8+6OBfa78y4L570OzjsOFtrvzjP/zvPvzrPgi+1359lo5zlh55nZpfa78wyp8zyl82zhcvvdedbOee7MeQZrpf3uPJPkPJ/jPKuyyn53nt1wnmNw7ulfY78797g793s79z6vs9+de4H/dV+sHevtd+eeSef+Qedeug32u3NvmXOflXPP0Ub73bkHx7kfxbk3Y7P97tyr4OzbO3vYW+x3Z0/X2d909vq22u/O3pezD+TsiWy33509Ame93Fk73mm/O2upzrqis8a223531pyc9RdnLWKv/e705k6f6vRs++13p4dx6nmntj1ovzu1nlP3ODXAIfvd0URHH5xcecR+d3KHwyMHU8eKRf37A+YC7fdwBgO5EB3mQv4P6vok3xqkD1hzvAw9R/QEnZ93ZAD0O/LLzRE/qnUZwe7vSS/FjyECs6A2X44DuQHixiBjQU6S/770iZgkL/d5kvy3ihcCGx4LJOEQoBMd/+X9Qp5z3XhO4CX8OjSotMxQgSRyhd8rLed6jErrB4FK6wqC3T+KVFpXAJPRlcBKC4gb82NQaUkkyStP0EorAVkRDCNVWsP0Ki2oX4cHlZYZLpBErmInEUTFcRWh4vhZpOK4CkjKq326tvNzUHFIJIurT9CKIxGpjCNIFccIvYoD6teRQcVhRgokkVEKFYczyWiQ4dnJSUkmM5QdW5zjxILae40OcWjqq0Cca05Q9U1CqsRokvqO1lNfqF/HBOprxggkkWsV1PdawjbitUCwXxcopgTYrztBFTMZmdnHkhRzrJ5iQv06LlBMM04giVzvd8V0VpwbROH61fDHxACv1QBo7w3ggDAqmOsJOxaHyfeGhAr2+deNWjcQ7D4islNzPVAcxgPXioC4MUeCnRoJ0Rp/gla+KcgKbQKp8p2gV/lC/XpjUPmaGwWSyE1+vwvXAWURQsVxVOAu3JsIdh8TqbRuAiajicBKC4gbcyyotCSS5MQTtNJKRVYEk0iV1iS9Sgvq15uDSsvcLJBEbvF7pdW5GOd5p0LV/F9p3UKwO7oaHpTOB11p3QJMRpOBlRYQNwYZC9VKSyFJTvZ7klR4AnoKqdKaEq60CtsRZ0ds1F8/jNedoGxhzrOeyDzriszTKUYU5nlDcc48o7DzDBVyXfPW4r//vc0petAOibEXrR/11wRZ0KRWH3itGGCV4k6Qt7pa0bwPWihuBQrFVKAfoqLw5HJiHuNxl75fsVTQa03zeTwcvEwjdEq3kwqW210FS3EXF90f+D2TAOHK/f2T5THdgl7b5B24fXFHWBCmFw87JM+Bd4SD7T433SPJoW9LcjvxH4IrIQwucweQoNOLY4OLJpJDzrxgAuPBuJUow4kxI5nMICWTGbx1ZlO1SFTUuUUIS1vVfI2Bf715uAvhzcNxpKU3dCFyJ1DwgbE2cT7HjcOX3gS+FBPgy9kEvhQX4ctdQL4AY22KC+CmKwE3pURwM9OnebaUAG7OIeBmVnH/60tfgr6UEYh3L0K8y4rkibuBeQIYa1NWoB47j8CXkwX4ci6BL6eI8OUeIF+AsTanCOCmPwE3s32uq47dFxDsniNg94UEu+8VsHsgwe77BOy+iGD3XAG7Mwh2zxOwO5Ng9/0CducQ7H5AwO5cgt3zBeweRLB7gYDdlxDsflDA7ksJdj8kYPdggt0PC9h9GcHuhQJ2DyXY/YiA3VcQ7H5UwO4rCXYvErB7OMHuxQJ2X0Ww+zEBu68m2P24gN0jCHYvAdrtPMaVYEe98PWce0Gc/W1nr7KHnbuzR9bT/nX2JJx11r72uJ8dzhqfs97lrP0MsN+dtRBnXcDpkZ1+Mcuey7bD6aGcfsKprS+2351a06m7nBrE0ePL7bkhdjga5eRrJ3cNs98dLju4dmLs2DvSnhvF+8Vl2n1gS8HPxSZE/fWDuj7JtwbpA9Ycn/D7I1/OI0gMgJ7q8+diHZufINhdSeS52CeANw4/CdwoA+LGVKomkyRpz8UqJMknfZ4k/63ihcCGTwOScBnpzvBlvDvDJfy6PKi0zHKBJPKU3yst53qMSquqQKX1FMHuaiKV1lPAZPQ0sNIC4sZUCyotiST59AlaaSUgK4IVpEprhV6lBfXryqDSMisFksgz7CSCqDieIVQc8SIVxzNAUj7r07Wd+KDikEgWz56gFUciUhmfI1Ucz+lVHFC/rgoqDrNKIIk87/e1HWebm7G2U0tgbed5gt21RSqt54HJ6AVgpQXEjakdVFoSSfKFE7TSSkJWBKtJldZqvUoL6tc1QaVl1ggkkRcV1nZeJGwZvwgE+0s6YKcppgLYXzpBFTMZmdnXkhRzrZ5iQv26LlBMs04gibzs97UJ5yXujLWJOgJrEy8T7K4rsjbxMjAZvQJcmwDixtQN1iYkkuQrJ2illYKsCF4lVVqv6lVaUL+uDyots14gibzm90rL+fkhRqVVX6DSeo1gdwORSus1YDJ6HVhpAXFjGgSVlkSSfP0ErbRSkRXBG6RK6w29Sgvq1w1BpWU2CCSRN/1ead1GWtNqKFBpvUmwu5FIpfUmMBm9Bay0gLgxjYJKSyJJvnWCVlppyIrgbVKl9bZepQX168ag0jIbBZLIO36vtDqTXmCVIFBpvUOwO1Gk0noHmIzeBVZaQNyYxKDSkkiS756glVY6siLYRKq0NulVWlC/bg4qLbNZIIm85/dK61bSmlaKQKX1HsHuVJFK6z1gMnofWGkBcWNSg0pLIkm+7/ckqfDGwA9IldYHvErLFLbXjiUk4S0E0DufQuB5xgDj/2FxbDJCx9qJyYeEWH9Ewv1HRNxPJRVdHxfnFl2hgn2ME/+PCXZvJWFgKxEDLD409vnvtLIw0ETk930/AeZpYKwN0n9uDn0S5pDqKsMLcf6f46fIvK8aqFuK+H+O24JAhcwUgUBtDwIVMpfZift9jp/5fe3A+d0pRo/7uUCt/znB7h2kWn8HsdZ3er3PCL7YKYCBnQS7vyBh4AsiBlh8aC7Q7zEw0EKk3/sS2O8BY21akPq9L8X7vRkC1ekuvxc9TsEzi0D61j5Pdo7Q7yLY3UYk2e0GJjtgrE0bAZHcTcDNV6RC6SvXXPM+6M3RD4GbY1/j/JCkKmxfF/f/HPf4Xdh6krr59gLCtodgdwcRYdsLFDZgrE0HAWHbS8DNNyRh+4YvbClIYfs2uA/YfCsgbPtIdyShwZmKBOf+AJxmvwA4vxMBZzISnN/jjE5UBef3AuA84PeWoC+pJTgosLlzkGD3D6TS7gfyBt8Bgi9+FMDAjwS7fyJh4CfyBh+DD50FWjwGBrqILA0cAi4NAGNtupA2+A65OJT38XOL/HNQ6JmfBQq9X/xe6PUjFXqHBUT+MMHuIySRP0Iu9H4h+OJXAQz8SrD7NxIGfiMXegw+dBMo9BgY6C5S6B0FFnrAWJvupELvKL/Qy0AWeseC5WZzTKDQiyqhsdyciQTnSSUCcJ5Uwv9zLCQCziwkOKMDcJpoAXDGiIATKuuFcUbLrt8UFgBnLHqO6AkOIK3fxIENZ/RtzhzRdhcB2u3uO5zrxpNA6qzfxBJ8UVQAA0UJdhcjYaBYCe76DYMPPQXWbxgY6CWyflMch1UDjLXpRVq/KV5Ca/2mBC4+sg9plBAo9Er6vdBzirz7CIVeH4GHNEoSEnxfkQRfCpjggbE2fQUKg1IE3JQmFYelS9Af0oCu/ZYJhM2UERC2sgrCNpcgbP0EhK0sIUH1FxG2ckBhA8ba9BcQtnIE3JQnCVt5urCZEFLYTg72jczJAsJ2isa+kYG+86FCAE5TQQCcFUU2NXOR4Dw12NQ0pwqAs5LfW4Is0qZmZYENrcqE0q4KqbSrQt7UrETwRVUBDFQl2F2NhIFq5E1NBh8GCLR4DAwMFFkaqA5cGgDG2gwkbWpWp29qYlvkGkGhZ2oIFHrxfi/0skmFXk0Bka9JSPC1SCJfi1zoxRN8UVsAA7UJdp9GwsBp5EKPwYdMgUKPgYEskULvdGChB4y1ySIVeqfzC70kZKFXJ1huNnUECr26Insh0Jfd1QvAaeoJgPMMEXBCX9BTPwCnqS8AzgYi4ITK+pnB+o05UwCcZ/l9/eZi0vpNQ4HevSGhb2tE6t0bkddvziL4IiSAgRDBbkPCgCGv3zD4kCuwfsPAwCCR9ZsE4PoNMNZmEGn9JkFs/SYxeEjDJAoUekkKD2k8SCj0LhV4SCOJkOAHiyT4ZGCCB8baDBYoDJIJuEkhFYcp/Ic0oGu/qYGwmVQBYUtTELaHCMI2REDY0ggJaqiIsKUDhQ0YazNUQNjSCbhpTBK2xnxhg74vpkmwb2SaCAhbU5F9I+g7H5oF4DTNBMDZXASc6Uhwtgg2NU0LAXC29HtLcDlpU7OVwIZWK0Jp15pU2rUmb2q2JPiijQAG2hDsbkvCQFvypiaDD8MEWjwGBoaLLA20Ay4NAGNthpM2NdvxNzWhLXL7oNAz7QUKvQ5+L/SGkAq9jgIi35GQ4DuRRL4TudDrQPBFZwEMdCbY3YWEgS7kQo/BhxEChR4DAyNFCr2zgYUeMNZmJKnQO5tf6OUgC72uwXKz6SpQ6HUTWW6GvuyuewBO010AnD00wJkAfUHPOQE4zTkC4Owpkjmhst4rWL8xvQTAea7f12+GkdZvegv07r0JfVsfUu/eh7x+cy7BF30FMNCXYPd5JAycR16/YfBhtMD6DQMDY0TWb84Hrt8AY23GkNZvzhdbv+kXPKRh+gkUev0VHtJYTCj0xgo8pNGfkODHiST4C4AJHhhrM06gMLiAgJsLScXhhfyHNKBrvwMCYTMDBIRtoIKwPUYQtvECwjaQkKAmiAjbRUBhA8baTBAQtosIuMkgCVsGXdgSoO+LyQz2jUymgLBliWxqQt/5kB2A02QLgDNHBJyJSHDmBpuaJlcAnIP83hKMJG1qXiywoXUxobS7hFTaXULe1BxE8MWlAhi4lPG2NRIGBpM3NRl8mCjQ4jEwMElkaeAy4NIAMNZmEmlT8zL6pia2Rb48KPTM5QKF3hC/F3qjSIXeUAGRH0pI8FeQRP4KcqE3hOCLKwUwcCXj1QokDAwjF3oMPkwWKPQYGJgiUugNBxZ6wFibKaRCbziRQ2NIWnqVQB69isChq0l59GoyBhw9LQS+7jRg8zBCAE8jGE+Ek/A0kqzLDG5NFdBlBgamiejyKKAuA2NtppF0eVSYQ853E/XXDzpmaLy+EOf/OV6DzPuqgbqliP/nODoIlO0ABAI1JghUyFwW7f85XqtwD+61hHrnOoFa/zqC3WNJtf5YYq1/Q7h3hD9oI4CBcQQMXE/CwPXkfo/Bh+kC/R4DAzNE+r0bgP0eMNZmBqnfu0G835shUJ2OVyh6xhNIP9Pnya50cY7QzxJJdhOAyQ4YazNLQCQnEPhyI6lQujE8V9UkX7So/+d4k9+T/ARSVzPb52R1xO0mAlnniCT5icAkD4y1mSOQ5Ccybj0mJflJ4km+pECSvzlYZ7ZVs0CgblFouW5h3OcnsMY4mXGfHymrTiGuMU4iVWS3CmDgVgIGbiNh4DbyOjODD3MFqisGBuaJVOVTgVU5MNZmHmmdear4OnMFgaJnWlCdhsypAoG6PQhUyFQWCNQdQaBCpqpAoKYr9HvTGfvqArX+DILdd5Jq/TuJtf4UUr93lwAG7mJsL5MwMJPc7zH4MF+g32NgYIFIvzcL2O8BY20WkPq9WeL9XrxA0XO3QtFzN4H0D/s82Z1Muq9ooUiyuweY7ICxNgsFRPIeAl9mkwql2eJbzrUEkvwchSQ/hwDaRT4n6ymkJL9YJMnfC0zywFibxQJJ/l4CX+4jJfn7xJP8aQJJfm6wzhwydQQCNU9BjecRssv9AmuM9xPsfoCUVR9gvkeQtM48XwAD8xlrjCQMLCCvMzP4sESgumJgYKlIVf4gsCoHxtosJa0zP0h/YbQJIV8Y/RAwl6gWeg+V8P8cHy7B4TsanAYJzoUBOM1CAXA+IgLOBCQ4Hw3AaR4VAOciEXBCZX0x+HcgFMG5WACcjyms3zxG6F8eF+jdH2f0q6TefQmxd59BWr9ZKoCBpQQMPEHCwBPk9RsGH5YJrN8wMLBcZP3mSeD6DTDWZjlp/eZJsfWbZbj4JKkWessECr3lCoXeckKiW+HzBF+ZdNvMSpEE/xQwwQNjbVYKFAZPEfjyNKk4fNo117yPn9d+VwTCZlYICNtKBWFbSSDqcz5PUFVIwrZKRNieAQobMNZmlYCwPUPgy7MkYXuWL2wpSGF7Ltg3Ms8JCNsqkX0j6O+HPx/sG5nnBcD5gkLV9QJBRVYL7BmsJti9hqSea4h7BrNI+0YvCmDgRQIGXiJh4CXyvhGDD6sFqmgGBtaIdF9rgd0XMNZmDWnfaC1/3ygNWeitC7oQs06g0HtZpAtJR4LzlQCc5hUBcL4qAs4MJDjXB+A06wXA+ZoIOKGy/nqwfmNeFwDnGwrrN28Q+pcNAr37BoLdb5J69zeJvfsc0vrNWwIYeIuAgbdJGHibvH7D4MNagfUbBgbWiazfbASu3wBjbdaR1m82iq3fvBPcHmXeESj03lUo9N4lJLpXfZ7g40m3R60XSfCbgAkeGGuzXqAw2ETgy2ZScbiZf3sUdO33vUDYzHsCwva+grC9TyDqGz5PUDVJwrZBRNg+AAobMNZmg4CwfUDgyxaSsG3hC1sOUtg+DPaNzIcCwvaRyL5RFhKcHwf7RuZjAXBuVai6thJU5BOBPYNPCHZ/SlLPT4l7BvNI+0bbBDCwjYCB7SQMbCfvGzH48LZAFc3AwEaR7uszYPcFjLXZSNo3+oy+b5QAfV/M50EXYj4XKPR2aHQhCdB3PuwMwGl2CoDzCxFwQt/3+2UATvOlADh3iYATKuu7g/Ubs1sAnF8prN98Rehfvhbo3b8m2L2H1LvvIfbuC0jrN3sFMLCXgIFvSBj4hrx+w+DDJoH1GwYGNous33wLXL8BxtpsJq3ffCu2frMvuD3K7BMo9PYrFHr7CYnuA58n+Dqk26O2iCT474AJHhhrs0WgMPiOwJfvScXh9/Tbo7BrvwcCYTMHBITtoIKwHSQQ9WOfJ6i6JGHbKiJsPwCFDRhrs1VA2H4g8OVHkrD9yBc26Pt+fwr2jcxPAsJ2SGTfCPq+35+DfSPzswA4f1Goun4hqMhhgT2DwwS7j5DU8whxz2Ahad/oVwEM/ErAwG8kDPxG3jdi8GGbQBXNwMB2ke7rKLD7AsbabCftGx3l7xtB3xdzLOhCzDGBQi+qpEYXAn3nw0klA3CeVNL/cywkAk7o+36jA3CaaAFwxoiAEyrrhXFGy67fFBYAZyx6joz1G2eS6P4lDmw4o2+LI9hdBGi3u+9wrhtPAuli0vpNUQEMFCVgoBgJA8VKctdvGHzYIbB+w8DATpH1m+I4rBpgrM1O0vpN8ZJa6zclcPGRvT2qhEChV1Kh0CtJSHS7fJ7gzyTdHrVbJMGXAiZ4YKzNboHCoBSBL6VJxWHpkvTbo6Brv2UCYTNlBIStrIKwlSUQdY/PE9RZJGHbKyJs5YDCBoy12SsgbOUIfClPErbyfGGDvu/35GDfyJwsIGyniOwbQd/3WyHYNzIVBMBZUaHqqkhQkVMF9gxOJdhdiaSelYh7BktJ+0aVBTBQmYCBKiQMVCHvGzH4sE+gimZgYL9I91UV2H0BY232k/aNqtL3jRKh74upFnQhpppAoVddowtJhL7zoUYATlNDAJzxIuCEvu+3ZgBOU1MAnLVEwAmV9drB+o2pLQDO0xTWb04j9C+nC/TupxPsrkPq3esQe/flpPWbugIYqEvAQD0SBuqR128YfDggsH7DwMBBkfWbM4DrN8BYm4Ok9ZszxNZv6ge3R5n6AoVeA4VCrwEh0f3k8wSfQLo96pBIgj8TmOCBsTaHBAqDMwl8OYtUHJ5Fvz0Ku/bbMBA201BA2BopCFsjAlEP+zxBJZKE7YiIsIWAwgaMtTkiIGwhAl8MSdgMX9ig7/tNCPaNTIKAsCWK7BtB3/ebFOwbmSQBcCYrVF3JBBVJEdgzSCHYnUpSz1TinsFK0r5RmgAG0ggYSCdhIJ28b8Tgw1GBKpqBgWMi3VdjYPcFjLU5Rto3aszfN4K+L6ZJ0IWYJgKFXlORLgT6zodmAThNMwFwNhcBJ/R9vy0CcJoWAuBsKQJOqKy3CtZvTCsBcLZWWL9pTehf2gj07m0Idrcl9e5tib37KtL6TTsBDLQjYKA9CQPtyes3DD4Uqn5iYiC6Ol6coqLw6zcdgOs3wFgbpP/cHOogtn7TMbg9ynQUKPQ6KRR6nQiJLtbnCT6NdHtUnEiC7wxM8MBYmziBwqAzgS9dSMVhF/7tUdC137MDYTNnCwhbVwVh60ogajGfJ6h0krAVFxG2bkBhA8baFBcQtm4EvnQnCVt3vrBB3/fbI9g3Mj0EhO0ckX0j6Pt+ewb7RqanADh7KVRdvQgqcq7AnsG5BLt7k9SzN3HPYA1p36iPAAb6EDDQl4SBvuR9IwYfSglU0QwMlBbpvs4Ddl/AWJvSpH2j8+j7RknQ98WcH3Qh5nyBQq+fRheSBH3nQ/8AnKa/ADgvEAEn9H2/FwbgNBcKgHOACDihsj4wWL8xAwXAeZHC+s1FhP4lQ6B3zyDYnUnq3TOJvfs60vpNlgAGsggYyCZhIJu8fsPgQzmB9RsGBsqLrN/kANdvgLE25UnrNzli6ze5we1RJleg0BukUOgNIiS6Cj5P8M1Jt0dVFEnwFwMTPDDWpqJAYXAxgS+XkIrDS+i3R2HXfi8NhM1cKiBsgxWEbTCBqJV9nqBakIStioiwXQYUNmCsTRUBYbuMwJfLScJ2OV/YoO/7HRLsG5khAsI2VGTfCPq+3yuCfSNzhQA4r1Souq4kqMgwgT2DYQS7h5PUczhxz2A9ad/oKgEMXEXAwNUkDFxN3jdi8KG6QBXNwEANke5rBLD7Asba1CDtG43g7xtB3xczMuhCzEiBQm+USBcCfefDNQE4zTUC4BwtAk7o+37HBOA0YwTAea0IOKGyfl2wfmOuEwDnWIX1m7GE/mWcQO8+jmD39aTe/Xpi776BtH5zgwAGbiBgYDwJA+PJ6zcMPtQSWL9hYKC2yPrNBOD6DTDWpjZp/WaC2PrNjcHtUeZGgULvJoVC7yZCoqvj8wTflnR7VF2RBD8RmOCBsTZ1BQqDiQS+TCIVh5P4t0dB135vDoTN3CwgbLcoCNstBKLW93mCakcStgYiwjYZKGzAWJsGAsI2mcCXKSRhm8IXNuj7fm8N9o3MrQLCdpvIvhH0fb9Tg30jM1UAnNMUqq5pBBW5XWDP4HaC3XeQ1PMO4p7BRtK+0XQBDEwnYGAGCQMzyPtGDD40FKiiGRhoJNJ93QnsvoCxNo1I+0Z30veNkqHvi7kr6ELMXQKF3kyNLiQZ+s6HWQE4zSwBcN4tAk7o+37vCcBp7hEA52wRcEJlfU6wfmPmCIDzXoX1m3sJ/ct9Ar37fQS755J697nE3n0zaf1mngAG5hEwcD8JA/eT128YfEgQWL9hYCBRZP3mAeD6DTDWJpG0fvOA2PrN/OD2KDNfoNBboFDoLSAkuhSfJ/jOpNujUkUS/IPABA+MtUkVKAweJPDlIVJx+BD99ijs2u/DgbCZhwWEbaGCsC0kELWxzxNUF5KwNRERtkeAwgaMtWkiIGyPEPjyKEnYHuULG/R9v4uCfSOzSEDYFovsG0Hf9/tYsG9kHhMA5+MKVdfjBBVZIrBnsIRg91KSei4l7hlsIe0bPSGAgScIGHiShIEnyftGDD40F6iiGRhoIdJ9LQN2X8BYmxakfaNl/H0j6PtilgddiFkuUOg9JdKFQN/58HQATvO0ADhXiIAT+r7flQE4zUoBcD4jAk6orD8brN+YZwXA+ZzC+s1zhP5llUDvvopg9/Ok3v15Yu++lbR+84IABl4gYGA1CQOryes3DD60Fli/YWCgjcj6zRrg+g0w1qYNaf1mjdj6zYvB7VHmRYFC7yWFQu8lQqJr7/ME34N0e1QHkQS/FpjggbE2HQQKg7UEvqwjFYfr+LdHQdd+Xw6EzbwsIGyvKAjbKwSidvZ5gjqHJGxdRITtVaCwAWNtuggI26sEvqwnCdt6vrBB3/f7WrBvZF4TELbXRfaNoO/7fSPYNzJvCIBzg0LVtYGgIm8K7Bm8SbD7LZJ6vkXcM9hO2jd6WwADbxMwsJGEgY3kfSMGH7oJVNEMDHQX6b7eAXZfwFib7qR9o3fo+0Yp0PfFvBt0IeZdgUJvk0YXkgJ958PmAJxmswA43xMBJ/R9v+8H4DTvC4DzAxFwQmV9S7B+Y7YIgPNDhfWbDwn9y0cCvftHBLs/JvXuHxN7952k9ZutAhjYSsDAJyQMfEJev2HwoafA+g0DA71E1m8+Ba7fAGNtepHWbz4VW7/ZFtweZbYJFHrbFQq97YRE18fnCb4P6faoviIJ/jNgggfG2vQVKAw+I/Dlc1Jx+Dn99ijs2u+OQNjMDgFh26kgbDsJRO3n8wTVlyRs/UWE7QugsAFjbfoLCNsXBL58SRK2L/nCBn3f765g38jsEhC23SL7RtD3/X4V7BuZrwTA+bVC1fU1QUX2COwZ7CHYvZeknnuJewa7SftG3whg4BsCBr4lYeBb8r4Rgw8DBKpoBgYGinRf+4DdFzDWZiBp32gff98I+r6Y/UEXYvYLFHrfiXQh0Hc+fB+A03wvAM4DIuCEvu/3YABOc1AAnD+IgBMq6z8G6zfmRwFw/qSwfvMToX85JNC7HyLY/TOpd/+Z2LvvJa3f/CKAgV8IGDhMwsBh8voNgw+ZAus3DAxkiazfHAGu3wBjbbJI6zdHxNZvfg1ujzK/ChR6vykUer8REl2uzxP8BaTbowaJJPijwAQPjLUZJFAYHCXw5RipODzGvz0KuvYbVSoQNqAPaHM8qZSAsDmTRBP1Up8nqAtJwjZYRNgK4YBpgLE2gwWErRCBL9GlOMIWXYoubND3/cYA/aAqbDECwla4FCfPocEJfd9vLM5o2X2jWAFwxilUXXEEFSlSyv/qWYRgd1GSejrXjSeBdD9p36iYAAaKETBQnISB4kQMsPgwRKCKZmBgqEj3VQLYfQFjbYaS9o1KlGLvG6VC3xdTMuhCTEmBQq+URheSCn3nQ+kAnKa0ADjLiIAT+r7fsgE4TVkBcJYTASdU1ssH6zemvAA4T1ZYvzmZ0L+cItC7n0KwuwKpd69A7N0PktZvKgpgoCIBA6eSMHAqef2GwYdhAus3DAwMF1m/qQRcvwHG2gwnrd9UElu/qRzcHmUqCxR6VRQKvSqERDfC5wk+k3R71EiRBF8VmOCBsTYjBQqDqgS+VCMVh9Xot0dh136rB8JmqgsIWw0FYatBIOponyeoLJKwjRERtnigsAFjbcYICFs8gS81ScJWky9s0Pf91gr2jUwtAWGrLbJvBH3f72nBvpE5TQCcpytUXacTVKSOwJ5BHYLddUnqWZe4Z3CItG9UTwAD9QgYOIOEgTPI+0YMPowVqKIZGBgn0n3VB3ZfwFibcaR9o/r8fSPo+2IaBF2IaSBQ6J0p0oVA3/lwVgBOc5YAOBuKgBP6vt9GAThNIwFwhkTACZV1E6zfGCMAzgSF9ZsEQv+SKNC7JxLsTiL17knE3v0Iaf0mWQADyQQMpJAwkEJev2HwYbzA+g0DAxNE1m9Sges3wFibCaT1m1Sx9Zu04PYokyZQ6KUrFHrphEQ30ecJ/mLS7VGTRBJ8Y2CCB8baTBIoDBoT+NKEVBw24d8eBV37bRoIm2kqIGzNFIStGYGok32eoC4hCdsUEWFrDhQ2YKzNFAFha07gSwuSsLXgCxv0fb8tg30j01JA2FqJ7BtB3/fbOtg3Mq0FwNlGoepqQ1CRtgJ7Bm0JdrcjqWc74p7BMdK+UXsBDLQnYKADCQMdyPtGDD5MFaiiGRiYJtJ9dQR2X8BYm2mkfaOORA4Vslhy9LQQ+LqxwMKxk0BO7kTgY2dSTu5MxhNDl7sIYKALAQNnkzBwNlmXGXyYLqDLDAzMENHlrkBdBsbazCDpcleP+znQPu0G9GnjarhrNanG8Wk3Yl7qbHvGGII2dSfl6O5/A1+hgn0MEl9uPxTUpz1IPu1BxJdT895JwNdMn+ueU+99SrB7lojunQPkEDDWZpbPcePw5S4CbmYL8GUbwe45InzpCeQLMNZmjgBfZhJwM1eAL9sJds8T4UsvIF+AsTYq/jsX6L/mwB6qBamHOpdY4/Yg9VC9SfV+7wj0UEh89Qb2UH1IPu1DxJeDrVkEfM0XWDvcTbB7gUiO7gvkEDDWZgFp7bCva50YjaWepBz9sACH9hLsXijCofOAHALG2iwkceg8IoecXutuApYWCfRa+wh2Lxbh0PlADgFjbRYLrE3cQ8DNEgG+fEewe6kIX/oB+QKMtVHxX3+g/zoD1ya6kNYm+hN7x76kuvcCUh99QQTWJpD4ugC4NnEhyacXRuCejAFAn3YDcrY7ibMDiJztR+LsQBK+BkaAs0h8DQRy9iKSTy8i35Mxm4CvZQJ1aVQJvN3LReqqDCCHgLE2ywX6uDkEvqwQ4EshAl9WivAlE8gXYKzNSgG+3Evgy3MCfIkh8GWVCF+ygHwBxtqo+C8b6L+ewB6qF6mHyibWuANIPVQOqd7PiUAPhcRXDrCHyiX5NJd8T8Z9BHytFthPLkXQuDUiOXoQkEPAWJs1pP3kQcT9ZIdDcwkcWivAoXIEDq0T4dDFQA4BY23WkTh0MfmejHkEDr0q0GudQuDQehEOXQLkEDDWZr3A2sT9BL68IcCXigS+bBDhy6VAvgBjbVT8NxjovwHAtYmBpLWJwcTeMYu0NnEZqY++LAJrE0h8XQZcm7ic5NPLI3BPxhCgTzOBnM0icXYIkbPZJM4OJeFraAQ4i8TXUCBnryD59AryPRkPEPD1tkBdWpdQl24UqauuBHIIGGuzUaCPm0/gyyYBvpxB4MtmEb4MA/IFGGuzWYAvCwh8+UCALw0IfNkiwpfhQL4AY21U/HcV0H+5wB5qEKmHuopY415M6qGuJtX7V0egh0Li62pgDzWC5NMR5HsyHiTg62OF30wmaNxWkRw9EsghYKzNVtJ+8kjyPRkPETi0TYBD6QQObRfh0Cggh4CxNttJHBpFvifjYQKHdgj0Wk0JHNopwqFrgBwCxtrsFFibWEjgyy4BvjQn8GW3CF9GA/kCjLVR8d8YoP+GAdcmhpPWJsYQe8fLSWsT15L66GsjsDaBxNe1wLWJ60g+vS4C92SMBfp0BJCzI0mcHUvk7BASZ8eR8DUuApxF4msckLPXk3x6PfmejEcI+NojUJd2I9Sle0XqqhuAHALG2uwV6OMeJfBlnwBfehD4sl+EL+OBfAHG2uwX4MsiAl8OCPClJ4EvB0X4MgHIF2CsjYr/bgT6bzSwhxpD6qFuJNa4w0g91E2kev+mCPRQSHzdBOyhJpJ8OpF8T8ZiAr5+EthPvoCgcYdEcvQkIIeAsTaHSPvJk8j3ZDxG4NBhAQ5dRODQEREO3QzkEDDW5giJQzeT78l4nMChowK9VhaBQ8dEOHQLkEPAWJtjAmsTSwh8KVTD/3zJIfAluoYGXyYD+QKMtVHx3xSg/yYC1yYmkdYmphB7x5GktYlbSX30rRFYm0Di61bg2sRtJJ/eFoF7MqYCfToZyNkpJM5OJXJ2FImz00j4mhYBziLxNQ3I2dtJPr09Apy9A+jTqUDOTiNx9g4iZ8eQODudhK/pEeAsEl/TgZydQfLpDPJ9VNcQeqpYn/eSJazd0wi8ihPphe4EcggYaxPnc9w4fBlN4Esxn9tdksSX4iJ8uQvIF2CsTXEBvowh8KWUz+0uReJLaRG+zATyBRhro+K/WcgaF9hDzSD1ULOINe4NpB7qblK9f3cEeigkvu4G9lD3kHx6D/k+qtIEfJXzucY594BMIGh7eZEcPRvIIWCsDdJ/bg7NJt4DMoGUoysIcGgigUMVRTg0B8ghYKxNRRKH5pDvo7qZgKXKPudQGVKvVUWEQ/cCOQSMtVHx331A/80F9lrzSL3WfcRaeBJJx+eS+oK5Eei1oPgC9lrzSD6dR96vmkbQuOo+17iyJI2rIZKj7wdyCBhrU0Ng/f12Al9q+dzuciS+1BbhywNAvgBjbWoL8OUOAl/q+Nzu8iS+1BXhy3wgX4CxNir+WwD033xgD7WA1EMtINa4U0g91IOkev/BCPRQSHw9COyhHiL59CHyftXJBHzVF1hrv4eg7Q1EcvTDQA4BY20akNbaHyY/938KgUMNBTh0L4FDjUQ4tBDIIWCsTSMShxaS96vmErCU4HMOVSD1WokiHHoEyCFgrI2K/x4F+m8JsNdaSuq1HiXWwtNIvdYiUl+wKAK9FhJfi4C91mKSTxeT96seJmhcis81riJJ41JFcvRjQA4BY21SBdbfHyHwpbHP7T6VxJcmInx5HMgXYKxNEwG+LCLwpbnP7a5E4ksLEb4sAfIFGGuj4r+lQP8tA/ZQy0k91FJijTuD1EM9Qar3n4hAD4XE1xPAHupJkk+fJO9XVSbgq7XAWvtTBG1vI5KjlwE5BIy1aUNaa19G3q+qQuBQewEOPUPgUAcRDi0HcggYa9OBxKHl5P2qVQQsdfY5h6qSeq0uIhx6CsghYKyNiv+eBvpvNbDXWkPqtZ4m1sKzSL3WClJfsCICvRYSXyuAvdZKkk9XkverXiZoXDefa1w1ksZ1F8nRzwA5BIy16S6w/v4qgS89fW53dRJfeonw5VkgX4CxNr0E+PIagS99fG53DRJf+orw5TkgX4CxNir+WwX031pgD7WO1EOtIta4c0g91POkev/5CPRQSHw9D+yhXiD59AXyflU8AV/9BNbaNxG0vb9Ijl4N5BAw1qY/aa19NXm/qiaBQwMEOPQBgUMDRTi0BsghYKzNQBKH1pD3qz4iYCnT5xyqReq1skQ49CKQQ8BYGxX/vQT039vAXmsjqdd6iVgLzyP1WmtJfcHaCPRaSHytBfZa60g+XUfer9pB0Lhcn2tcbZLGDRLJ0S8DOQSMtRkksP7+BYEvl/rc7tNIfBkswpdXgHwBxtoMFuDLLgJfhvjc7tNJfBkqwpdXgXwBxtqo+G890H+bgD3UZlIPtZ5Y4y4g9VCvker91yLQQyHx9Rqwh3qd5NPXyftVdQj4Giaw1v4dQduHi+ToN4AcAsbaDCettb9B3q+qS+DQCAEO/UDg0EgRDm0AcggYazOSxKEN5P2qQwQsjfY5h+qReq0xIhx6E8ghYKyNiv/eAvpvG7DX2k7qtd4i1sILSb3W26S+4O0I9FpIfL0N7LU2kny6kbxfFVUSj6+xPte4M0gaN04kR78D5BAw1macwPp7IQJfxvvc7vokvkwQ4cu7QL4AY20mCPAlhsCXiT63uwGJL5NE+LIJyBdgrI2K/zYD/bcD2EPtJPVQm4k17mJSD/Ueqd5/LwI9FBJf7wF7qPdJPn2fvF91JgFfkwXW2ksRtH2KSI7+AMghYKzNFNJa+wfk/aqzCByaKsChcgQOTRPh0BYgh4CxNtNIHNpC3q86hYCl6T7nUENSrzVDhEMfAjkEjLVR8d9HQP/tA/Za+0m91kfEWngpqdf6mNQXfByBXguJr4+BvdZWkk+3kverqhM0bqbPNa4RSeNmieToT4AcAsbazBJYf48n8GW2z+0OkfgyR4QvnwL5Aoy1mSPAl1oEvsz1ud2GxJd5InzZBuQLMNZGxX/bgf47AOyhDpJ6qO3EGnc5qYf6jFTvfxaBHgqJr8+APdTnJJ9+Tt6vSiDga77AWvuZBG1fIJKjdwA5BIy1WUBaa99B3q9KJHDoYQEOhQgcWijCoZ1ADgFjbRaSOLSTvF+VSMDSIp9zKInUay0W4dAXQA4BY21U/Pcl0H9Hgb3WMVKv9SWxFl5J6rV2kfqCXRHotZD42gXstXaTfLqbvF/VlKBxS3yucckkjVsqkqO/AnIIGGuzVGD9vTmBL8t8bncKiS/LRfjyNZAvwFib5QJ8aUngywqf251K4stKEb7sQf7GKJAvKv7bC/Rfoeq4a0XjrvWnGncvscZdReqhviHV+99EoIdC4usbYA/1Lcmn35L3q9II+HpOYK29M0HbV4nk6H1ADgFjbVaR1tr3kfer0gkcWi3AoW4EDq0R4dB+IIeAsTZrSBzaT96vOoeApbU+51BjUq+1ToRD3yF/HwfIIRX/fQ/0Xylgr1Wa1Gt9T6yF15B6rQOkvuBABHotJL4OAHutgySfHiTvV/UjaNyrPte4JiSNWy+So38AcggYa7NeYP39AgJf3vC53U1JfNkgwpcfgXwBxtpsEODLAAJf3va53c1IfNkowpefkO9sBvJFxX+HgP4rB+yhypN6qEPEGncdqYf6mVTv/xyBHgqJr5+BPdQvJJ/+Qt6vak7A1yaBtfaLCdq+WSRHH0b+xiBQ4zaT1toPk/erWhA49IEAhy4jcGiLCIeOADkEjLXZQuLQEfJ+1VAClj72OYdaknqtrSIc+hX5vjEgh1T89xvQf9WBvVYNUq/1G7EWXk/qtY6S+oKjEei1kPg6Cuy1jpF8eoy8XzWKoHHbfK5xrUgat10kR0eVxvkSGGuzXWD9fTSBLzt8bndrEl92ivDlJCBfgLE2OwX4ci2BL7t8bncbEl92i/ClEJAvwFgbFf9FA/1XC9hD1Sb1UI698eHrorm4gdRDxZTm+CKmNL+HQuLL7YeC+rQwyaeFifhysNWWgK89AmvtEwnavlckR8cCOQSMtdlLWmt37GXuV7UjcGifAIcmEzi0X4RDcUAOAWNt9pM4FEfkkNNr3UbA0gGfc6g9qdc6KMKhIkAOAWNtVPxXFOi/hsBeqxGp1ypKrIU3knqtYqS+oFgEei0kvooBe63iJJ8WJ+LL0biZBI37yeca14GkcYdEcnQJIIeAsTaHBNbf7ybw5bDP7e5I4ssREb6UBPIFGGtzRIAvswl8OepzuzuR+HJMhC+lgHwBxtqo+K800H8JwB4qkdRDlSbWuJtJPVQZUr1fJgI9FBJfZYA9VFmST8uS96s6E/BVKN7/a+0PErQ9Ol4jR5cDcggYa4P0n5tD5cj7VV0IHIqN9z+HHiFwKC5eg0PlgRwCxtog/efmUHnyftViApaKxfubQ2eTeq3i8RocOhm5Ho6z2aj47xSg/5oDe60WpF7rFGItvIXUa1Ug9QUVItBrIfFVAdhrVST5tCJ5v+opgsaVive3xnUlaVzpeI0cfSqQQ8BYG7T/GHxZQeBLOZ/b3Y3El/LxGnypBOQLMNYG7T8GX54h8KWCz+3uTuJLxXgNvlRG1mg4m42K/6oA/dca2EO1IfVQVYg17lZSD1WVVO9XjUAPhcRXVWAPVY3k02rk/aoeBHxVjvf/WvtagrZXidfI0dWBHALG2iD95+ZQdfJ+1TkEDlWP9z+HXiVwqEa8BodqADkEjLVB+s/NoRrk/arXCViqFe9vDvUk9Vq14zU4FI98FwPOZqPiv5pA/3UD9lrdSb1WTWItvJ3Ua9Ui9QW1ItBrIfFVC9hr1Sb5tDZ5v2oTQePqxPtb43qRNK5uvEaOPg3IIWCsDdp/DL68R+BLfZ/bfS6JLw3iNfhyOpAvwFgbtP8YfPmAwJeGPre7N4kvjeI1+FIH+Y4FnM1GxX91gf7rCeyhepF6qLrEGncnqYeqR6r360Wgh0Liqx6whzqD5NMzyPtVfQj4Soj3/1r7ZwRtT4zXyNH1kc/A4mw2SP+5OVSfvF/Vl8ChlHj/c+gLAodS4zU41ADIIWCsDdJ/bg41IO9X7SZgqXG8vzl0HqnXahKvwaEzgRwCxtqo+O8soP8GAHutgaRe6yxiLbyb1Gs1JPUFDSPQayHx1RDYazUi+bQReb/qO4LGNY/3t8adT9K4FvEaOTqEfAYWZ7NB+4/BlwMEvrT2ud39SHxpE6/BF4N83gFns0H7j8GXHwh8ae9zu/uT+NIhXoMvCUC+AGNtVPyXCPRfJrCHyiL1UInEGncvqYdKItX7SRHooZD4SgL2UMkknyaT96suIOCrc7z/19qPErS9S7xGjk4BcggYa4P0n5tDKeT9qgsJHOoW738OFSqFt7t7vAaHUpHPNuBsNkj/uTmUSt6vKkzAUs94f3NoAKnX6hWvwaE05L1tOJuNiv/Sgf4bAuy1hpJ6rXRiLbyf1Gs1JvUFjSPQayHx1RjYazUh+bQJeb+qFEHj+sT7W+MGkjSub7xGjm4K5BAw1gbtPwZfyhD40s/ndl9E4kv/eA2+NAPyBRhrg/Yfgy/lCHwZ4HO7M0h8GRivwZfmyHvW4oG6L+K/FkD/DQP2UMNJPVQLYo17kNRDtSTV+y0j0EMh8dUS2EO1Ivm0FXm/KpOAr8x4/6+1VyVoe1a8Ro5ujbynAGezQfrPzaHW5P2qLAKHcuP9z6F4AocGxWtwqA2QQ8BYG6T/3BxqQ96vqk3A0qXx/uZQNqnXGhyvwaG2QA4BY21U/NcO6L+xwF5rHKnXakeshQ+Req32pL6gfQR6LSS+2gN7rQ4kn3Yg71edSdC4IfH+1rgcksYNjdfI0R2R9xTgbDZo/zH40pDAl2E+tzuXxJfh8Rp86YRcP8bZbND+Y/AlRODLCJ/bPYjEl5HxGnzpDOQLMNZGxX9dgP4bD+yhJpB6qC7EGvcIqYc6m1Tvnx2BHgqJr7OBPVRXkk+7kverLibga3S8/9faGxO0fUy8Ro7uBuQQMNYG6T83h7qR96suIXBobLz/OdScwKFx8Roc6o5cK8bZbJD+c3OoO3m/qhUBS+Pj/c2hS0m91oR4DQ71QPYKOJuNiv/OAfpvKrDXmkbqtc4h1sLHSL1WT1Jf0DMCvRYSXz2BvVYvkk97/Q2fFnTu5wJ9Oh3I2Rkkzp5L5Gyh4hzO9ibhq3cEOIvEV28gZ/uQfNon7NPCdhRzYcz9QeOuYRTWlrxP39LECfctjb/ueUCAsOw+r/QfDgZd909FXSHwnHuUwvn0fGAy8IpPgV/sG44P2oeNgHPsVxqLGzTGnRj3K014IJOUsPu7EnZseOT/+DlhM+d5lsg8zxSZpzuXhgr48ZpfgV8Wba8RE4XPfzHAa4VIsY7C2vynQuoCVz6EgwopCE4SLO4CgPuDnjeiAs/9/cMIpMk7cPviwnDxNqB02CF5KnJhOMLucwMi0F71KXjFmxBmv7kQWD0PAAcXnekc0lxIqsTBREnrQ6qoBpIqqoHkWwRKEJZYJsb7f3vzTsKW1KR4jpqilykvAnaOwFgbtP8YfClJ4Mtkn9vt8OUuAl+mxGvwJQPIF2CsDdp/DL6UIvBlqs/tdvgyk8CXafEafMlEbl3jbDZo/zH4UobAl+k+t9vhy70EvsyI1+BLFnLbGGezQfuPwZeyBL7M9LndDl/uJ/BlVrwGX7KBfAHG2qD9x+BLOQJfZvvcbocvDxD4Midegy85QL4AY23Q/mPwpTyBL3N9brfDl/kEvsyL1+BLLpAvwFgbtP8YfKlA4Mt8n9vt8OURAl8WxGvwZRCQL8BYG7T/GHypSODLwz632+HLYwS+LIzX4MvFQL4AY23Q/mPw5VQCXxb53G6HL48T+LI4XoMvlwD5Aoy1QfuPwZdKBL4s8bndDl+WEPiyNF6DL5cC+QKMtUH7j8GXqgS+LPO53Q5fniLwZXm8Bl8GA/kCjLVB+4/Bl2oEvqzwud0OX54h8GVlvAZfLgPyBRhrg/Yfgy/VCXx5zud2O3x5lsCXVfEafLkcyBdgrA3afwy+1CDwZbXP7Xb48hyBL2viNfgyBMgXYKwN2n8MvtQi8GWtz+12+PIigS/r4jX4MhTIF2CsDdp/DL7UJvDlVZ/b7fDlZQJf1sdr8OUKIF+AsTZo/zH4chqBL2/43G6HL68Q+LIhXoMvVwL5Aoy1QfuPwZfTCXx52+d2O3x5lcCXjfEafBkG5Asw1gbtPwZf6hH4ssnndjt8eZPAl83xGnwZDuQLMNYG7T8GX84g8OUDn9vt8OUdAl+2xGvw5SogX4CxNmj/MfhSn8CXj31ut8OXdwl82RqvwZergXwBxtqg/cfgSwMCX7b53G6HL5sIfNker8GXEUC+AGNt0P5j8KUhgS87fG63w5cPCXzZGa/Bl5FAvgBjbdD+Y/ClEYEvu3xut8OXTwh82R2vwZdRQL4AY23Q/mPwJUTgyx6f2+3w5VMCX/bGa/DlGiBfgLE2aP8x+GIIfNnnc7sdvmwj8GV/vAZfRgP5Aoy1QfuPwZckAl8O+Nxuhy9fEPhyMF6DL2OAfAHG2qD9x+BLMoEvP/ncbocvXxH4cihegy/XAvkCjLVB+4/BlxQCXw773G6HL18T+HIkXoMv1wH5Aoy1QfuPwZdUAl+O+txuhy97CHw5Fq/Bl7FAvgBjbdD+Y/ClMYEvhWr6ny/fEfgSXVODL+OAfAHG2kT7HDcOX5oQ+BIrwJcfCHyJE+HL9UC+AGNt4gT40pTAl2ICfPmRwJfiIny5AcgXYKxNcQG+NCPwpZQAX34i8KW0CF/GA/kCjLUpLcCXlgS+lBPgy68EvpQX4csEIF+AsTblBfjSisCXCgJ8iSL8hmlFEb7cCOQLMNamogBfWhP4UlmALycR+FJFhC83AfkCjLWpIsCXNgS+VBfgSyECX2qI8GUikC/AWJsaAnxpT+BLLQG+FCHwpbYIXyYB+QKMtaktwJcOBL7UEeBLCQJf6orw5WYgX4CxNnUF+NKRwJf6AnwpSeBLAxG+3ALkCzDWpoEAXzoR+NJQgC+lCHxpJMKXyUC+AGNtGgnw5WwCXxIE+HIygS+JInyZAuQLMNYmUYAvXQl8SRHgy6kEvqSK8OVWIF+AsTapAnzpRuBLYwG+VCLwpYkIX24D8gUYa9NEgC/dCXxpLsCXygS+tBDhy1QgX4CxNi0E+NKTwJfWAnyJJ/CljQhfpgH5Aoy1aSPAl14EvrQX4MtpBL50EOHL7UC+AGNtOgjw5VwCXzoL8OV0Al+6iPDlDiBfgLE2XQT40pvAl24CfKlD4Et3Eb5MB/IFGGvTXYAv5xH40lOAL2cS+NJLhC8zgHwBxtr0EuDL+QS+9BHgS4jAl74ifLkTyBdgrE1fAb70I/ClnwBfDIEv/UX4cheQL8BYm/4CfOlP4MsAAb4kEPgyUIQvM4F8AcbaDBTgywACXzIF+JJG4EuWCF9mAfkCjLXJEuDLQAJfcgX40pTAl0EifLkbyBdgrM0gAb5cRODLpQJ8aUbgy2ARvtwD5Asw1mawAF8yCHwZIsCX5gS+DBXhy2wgX4CxNkMF+JJN4MswAb60JfBluAhf5gD5Aoy1GS7AlxwCX0YI8KUjgS8jRfhyL5AvwFibkQJ8ySXwZbQAXzoR+DJGhC/3AfkCjLUZI8CXQQS+jBXgS2cCX8aJ8GUukC/AWJtxAny5lMCX8QJ86UHgywQRvswD8gUYa4P0X4zjJzuuD1/vImtzhh2ZdtxTKipqth1z7Miy3+fZv9n2b44duXY8ZL8/bMdCOwbZ74vt34vt30vsuNSOJ+33ZXYst2Ow/b7S/r3M/r3cjiF2vGC/r7ZjjR1D7fd19u8V9u+Vdgyz43X7/Q07Ntgx3H7faP9eZf9ebccIO9633z+wY4sdI+33rfav8xvwzu9aO7/V+7n9vsOOnXY4v0W62/51fmPR+d0457ewvrXf99mx3w7nt34O2r/Ob5g4v8vgvGv+F/v9sB1H7HDepX3M/nXeEey899R5l2NhO2LtiLPDeVddcTucd3A57xVy3pVS1o5ydpS3w3kXREU7nGfcned2nWcRq9lR3Y4adjjPWtW2w3mGxLkv3rnX9ww76tvRwA7nXsZGdjj3aDn3nTh76cl2pNiRaoezV9jEDmcPxFnXddaqWtnR2o42dji9eAc7nB7DqZscLehqRzc7ujuxtaNX6T+4BM4laX3stfsRcsn9OI6GosNcyP9BXZ/kW4P0AWuOD6DniJ5gwygOQCeSRb7ANxlamx8g2D2JJPIxRGAW1Ob5wIIBiBuDjAU5SZq8652ISXK+z5Pkv1W8ENjwfkASLgA60fFfdNiPznXjOYGX8OuDQaVlHhRIIg/5vdJyrseotCYLVFoPEeyeIlJpPQRMRg8DKy0gbsyUoNKSSJIPn6CVVgKyIlhIqrQW6lVaUL8+ElRa5hGBJPIoO4kgKo5HCRXHVJGK41EgKRf5dG1nalBxSCSLRSdoxZGIVMbFpIpjsV7FAfXrY0HFYR4TSCKPK1QcziSjQYZnJyclmcxQdr/SHCcW1N4lOsShqa8CcZacoOqbhFSJpST1XaqnvlC/PhGor3lCIIk8qaC+TxK2EZ8Egn1ZoJgSYF92gipmMjKzLycp5nI9xYT69alAMc1TAknkab8rprPiHIrC9avhj4kBXisEtHcFOCCMCuZpwo7F7eR7Q0IF+/zrRq0VBLvvENmpeRooDiuBa0VA3BhkLFQrXwXRWnmCVr4pyArtGVLl+4xe5Qv167NB5WueFUgiz/n9LlwHlBcQKo47Be7CfY5g910ildZzwGS0ClhpAXFj7goqLYkkueoErbRSkRXB86RK63m9Sgvq1xeCSsu8IJBEVvu90upRivO8090CldZqgt33iFRaq4HJaA2w0gLixtwTVFoSSXKN35OkwhPQL5IqrRfDlVZhO+LsiI3664fxuhOULcx5niUyzzNF5ukUIwrzXFGaM88o7DxDhVzXfKn073/XOkUP2iHn2Ys2ivprgixoUmsEvNZ5wCrFnSBfcrWieR+0ULwEFIp1QD9EReHJ5cT8vNL4FyaysFTQa73s83g4eHmZ0Cm9QipYXnEVLMVdXHR/0D6aARCu3N8/WR7TLei1Td6B2xevhgVhfemwQ/Ic+Go42O5z6z2SHPq2JLcT/yG4EsLgMq8CCbq+NDa4aCI55MwLJjAejFuJMpwYM5LJa6Rk8hpvnflfb26+k/Dm5ntr+hoD/3pz8zml8HbfR1p6QxcirwMFHxhrc5/PcePw5S4CX+4X4EtPAl8eEOHLG0C+AGNtHhDgy0wCXx4U4EsvAl8eEuHLBiBfgLE2Dwnw5W4CXx4R4Mv5BL48KsKXN4F8AcbaPCrAl3sIfHlMgC/9CHx5XIQvbwH5Aoy1eVyAL7MJfHlCgC8ZBL48KcKXt4F8AcbaPCnAlzkEvjwlwJdMAl+eFuHLRiBfgLE2Twvw5V4CX54R4EsWgS/PivDlHSBfgLE2zwrwZR6BL88L8OUSAl9eEOHLu0C+AGNtXhDgy/0EvrwowJdLCXx5SYQvm4B8AcbavCTAlwcIfHlZgC9XEvjyighfNgP5Aoy1eUWAL/MJfHlNgC/DCHx5XYQv7wH5Aoy1eV2ALwsIfHlTgC/DCXx5S4Qv7wP5Aoy1eUuALw8T+PKOAF+uIfDlXRG+fADkCzDW5l0Bviwk8OU9Ab6MJvDlfRG+bAHyBRhr874AXx4h8OVDAb7cQODLRyJ8+RDIF2CszUcCfHmUwJdPBPgynsCXT0X48hGQL8BYm08F+LKIwJfPBPgygcCXz0X48jGQL8BYm88F+PI4gS9fCPDlFgJfvhThy1YgX4CxNl8K8GUJgS9fCfBlMoEvX4vw5RMgX4CxNkj/Oa9PTLKjXvh6zjPYznOlzrNyfWzs+9pxnh3Os0DO8w0X2uOL7HDu3XbuR3Xuscu13wfZcbEdzj1Ezn0Rl9vjK+xw9nydfSxnbX6E/T7SjlF2OGuPznrKdfb4ejucXtGpfx1Nn2i/T7LjZjucnOXE4TZ7fHupP2INxjrt/Qufgt9HmxT11w/q+iTfGqQPWHPc5vdXLTaM4gD0G7IIIV7iso1g97ckEUK/j3Yb8IU924GCBsSNQcaCnCRp76NVSJLbfZ4k/63ihcCGvwwk4WekNzJ9xnsjk4RfPw8qLfO5QBLZ4fdKy7keo9L6TqDS2kGw+3uRSmsHMBntBFZaQNyY74NKSyJJ7jxBK60EZEXwBanS+kKv0oL69cug0jJfCiSRXewkgqg4dhEqjh9EKo5dQFLu9unazg9BxSGRLHafoBVHIlIZvyJVHF/pVRxQv34dVBzma4EkssfvazvOD1Mx1nZ+Eljb2UOw+5BIpbUHmIz2AistIG7MoaDSkkiSe0/QSisJWRF8Q6q0vtGrtKB+/TaotMy3Aklkn8Lazj7ClvE+INj364CdppgKYN9/gipmMjKzf0dSzO/0FBPq1+8DxTTfCySRA35fm3B+PJmxNnFYYG3iAMHuIyJrEweAyeggcG0CiBtzJFibkEiSB0/QSisFWRH8QKq0ftCrtKB+/TGotMyPAknkJ79XWmdGcSqtowKV1k8Eu4+JVFo/AZPRIWClBcSNORZUWhJJ8tAJWmmlIiuCn0mV1s96lRbUr78ElZb5RSCJHPZ7pbWWtKZVqJb/K63DBLuja+FB6XzQldZhYDI6Aqy0gLgxyFioVloKSfLICVpppSErgl9JldavepUW1K+/BZWW+U0giRz1e6XVg/QCq1iBSusowe44kUrrKDAZHQNWWkDcGGQsVCsthSR57ASttNKRFUFUGU6l5Vw3nhN4Cb+eVEYmidAIivQBa46Fyvi80nqJtKZVTKDScoKDvm5xkUrLDcwCr+PhQG6AuDHIWKhWWgpJMtrvSVLhjYExpEorhldpmfOt/f0I4lOYAHrnUwg8z/OA8Y8tg01G6Fg7MYklCG4cCfdxRNyvIxVdRcpwi65QwT7GiX8RAgaKkjBQlIgBFh9K1ToxMVCaVHijf4ejGDBPA2NtkP5zc6hYmEOqqwwvxPl/jsWReV81ULcU8f8cSwSBCpkpAoEqGQQqZC6L9v8cS/l97cD53SlGj1taoNYvTajzypBq/TLEWt/p9UoRfFFWAANlCXaXI2GgHBEDLD6UE+j3GBgoL9LvlQf2e8BYG6T/3BwqL97vzRCoTk/2e9HTl1T0VPB5snOE/mRCsqsokuxOASY7YKxNRQGRPIWAmwqkQqmCa655H/TmaCzwDoWKOD8kqQpbxTL+n+Opfhe280jCVllA2E4lJKgqIsJWCShswFibKgLCVomAm8okYavMF7YUpLBVCe4DNlUEhK0q6Y4kNDhTkeCsFoDTVBMAZ3URcCYjwVkDZ3SiKjhrCIAz3u8twYWklqCmwOZOTUJpV4tU2tUib/DFE3xRWwADtQl2n0bCwGnkDT4GH6oLtHgMDNQQWRo4Hbg0AIy1QfrPzaHTXRzK+/i5Ra4TFHqmjkChV9fvhd5FpEKvnoDI1yMk+DNIIn8GudCrS/BFfQEM1CfY3YCEgQbkQo/Bh1oChR4DA7VFCr0zgYUeMNYG6T83h87kF3oZyELvrGC52ZwlUOg1FFluzkSCs1EATtNIAJwhEXBmIcFpAnAaIwDOBBFwQmU9MVi/MYkC4Ezy+/pNLmn9Jlmgd08m9G0ppN49hbx+k0TwRaoABlIJdqeRMJBGXr9h8KGOwPoNAwN1a+HFKSoKv36TDly/AcbaIP3n5lC62PpNY1x8ZB/SaCxQ6DXxe6E3iFTo1fd5gneKmyaMTRqRBN8UmOCBsTYNfI4bJ4k3JeCmGak4bFaG/pAGdO23eSBsprmAsLXwu7BdTBK2hgLC1oKQoBqJCFtLoLABY20aCQhbSwJuWpGErRVd2EwIKWytg30j01pA2Npo7BsZ6Dsf2gbgNG0FwNlOZFMzFwnO9sGmpmkvAM4Ofm8JLie1BB0FNrQ6Ekq7TqTSrhN5U7MDwRedBTDQmWB3FxIGupA3NRl8SBBo8RgYSBRZGjgbuDQAjLVB+s/NobPpm5rYFrlrUOiZrgKFXje/F3pXkAq97gIi352Q4HuQRL4HudDrRvDFOQIYOIdgd08SBnqSCz0GH1IECj0GBlJFCr1ewEIPGGuD9J+bQ734hV4SstA7N1huNucKFHq9RfZCoC+76xOA0/QRAGdfEXBCX9BzXgBOc54AOM8XASdU1vsF6zemnwA4+/t9/WYEaf3mAoHe/QJC33YhqXe/kLx+05/giwECGBhAsHsgCQMDyes3DD40Fli/YWCgSS28OEVF4ddvLgKu3wBjbZD+c3PoIrH1mwxcfGQf0sgQKPQy/V7ojSQVes19nuCd4iaTkOBbiCT4LGCCB8batPA5bpwknkXATTapOMwuQ39IA7r2mxMIm8kRELZcvwvbKJKwtRYQtlxCgmojImyDgMIGjLVpIyBsgwi4uZgkbBfzhQ36vphLgn0jc4mAsF0qsm8EfefD4ACcZrAAOC8TAWc6EpyXB5ua5nIBcA7xe0twHaklGCqwoTWUUNpdQSrtriBvag4h+OJKAQxcSbB7GAkDw8ibmgw+tBdo8RgY6CCyNDAcuDQAjLVB+s/NoeH8TU1oi3xVUOiZqwQKvav9XuhdTyr0RgiI/AhCgh9JEvmR5ELvaoIvRglgYBTB7mtIGLiGXOgx+NBZoNBjYKCLSKE3GljoAWNtkP5zc2g0v9DLQRZ6Y4LlZjNGoNC7VmS5Gfqyu+sCcJrrBMA5VgOcCdAX9IwLwGnGCYDzepHMCZX1G4L1G3ODADjH+339ZiJp/WaCQO8+gdC33Ujq3W8kr9+MJ/jiJgEM3ESweyIJAxPJ6zcMPnQTWL9hYKB7Lbw4RUXh128mAddvgLE2SP+5OTRJbP3mZlx8ZB/SuFmg0LvF74XeJFKh19PnCd4pbm4hJPheIgl+MjDBA2NtevkcN04Sn0zAzRRScTilDP0hDeja762BsJlbBYTtNr8L280kYesjIGy3ERJUXxFhmwoUNmCsTV8BYZtKwM00krBNowtbAvR9MbcH+0bmdgFhu0NkUxP6zofpATjNdAFwzhABZyISnHcGm5rmTgFw3uX3luA2UkswU2BDayahtJtFKu1mkTc17yL44m4BDNxNsPseEgbuIW9qMvjQT6DFY2Cgv8jSwGzg0gAw1gbpPzeHZtM3NbEt8pyg0DNzBAq9e/1e6N1OKvTuExD5+wgJfi5J5OeSC717Cb6YJ4CBeQS77ydh4H5yocfgwwCBQo+BgYEihd4DwEIPGGuD9J+bQw8QOTSDpKXzBfLofAKHFpDy6AIyBhw9LQS+rnNNlF8fFMDTgwQ8PUTC00NkXWZwK1NAlxkYyBLR5YeBugyMtcki6fLDYQ453xOj/vpBxwyN1xfi/D/Hhci8rxqoW4r4f46PBIEKmSkCgXo0CFTIXBbt/zku8vs6rNM3LiLUO4sFav3FBLsfI9X6jxFr/XvCvSPaF48LYOBxAgaWkDCwhNzvMfiQK9DvMTAwSKTfWwrs94CxNkj/uTm0VLzfmyFQnT7h96JnNknwLvV5snOKvScIyW6wSLJ7EpjsgLE2gwVE8kkCbpaRCqVl4bmqJvmiRf0/x+V+T/JzSEl+iECSX04g61CRJP8UMMkDY22GCiT5pwi4eZqU5J8WT/IlBZL8imCdOWRKCwRqpcI680pCdnlGYI3xGYLdz5Ky6rPENcZ5pIrsOQEMPEfAwCoSBlaR15kZfBgmUF0xMDBcpCp/HliVA2NtkP5zc+h58XXmCgJFzwtBdRoypwoEanUQqJCpLBCoNUGgQqaqQKBeVOj3XiTUOy8J1PovEexeS6r11xJr/YdI/d46AQysI2DgZRIGXib3eww+jBDo9xgYGCnS770C7PeAsTZI/7k59Ip4vxcvUPS86vei52GS4I0W2HJ+lZDsxogku/XAZAeMtRkjIJLrCbh5jVQovSa+5VxLIMm/7vckv5CU5McKJPnXCWQdJ5Lk3wAmeWCszTiBJP8GATcbSEl+g3iSP00gyb8ZrDOHTB2BQL2lsM78FiG7vC2wxvg2we6NpKy6kbjGuJhUkb0jgIF3CBh4l4SBd8nrzAw+jBeorhgYmCBSlW8CVuXAWBuk/9wc2uTiUN6nEBRTJoR8YfRmYC5RLfQ2l/H/HN8rw+E7GpwGCc73A3Ca9wXA+YEIOBOQ4NwSgNNsEQDnhyLghMr6RzijE1XB+ZEAOD9WWL/5mNC/bBXo3bcS7P6E1Lt/QuzdnySt33wqgIFPCRjYRsLANvL6DYMPEwXWbxgYmFQLL05RUfj1m+3A9RtgrA3Sf24ObRdbv/kMF58k1ULvM4FC73O/F3rLSCI/WeC2mc8JCX6KSILfAUzwwFibKT7HjZPEdxBws5NUHO50zTXv4+e13y8CYTNfCAjbl34XtuUkYZsqIGxfEhLUNBFh2wUUNmCszTQBYdtFwM1ukrDt5gtbClLYvgr2jcxXAsL2tci+EfT3w/cE+0ZmjwA49yrsG+0lqMg3AnsG3xDs/paknt8S9wxWkirvfQIY2EfAwH4SBvaT940YfJguUEUzMDBDpPv6Dth9AWNtkP5zc+g7/r5RGrLQ+z7oQsz3AoXeAZEuJB0JzoMBOM1BAXD+IALODCQ4fwzAaX4UAOdPIuCEyvqhYP3GHBIA588K6zc/E/qXXwR6918Idh8m9e6Hib37C6T1myMCGDhCwMCvJAz8Sl6/YfBhpsD6DQMDs2rhxSkqCr9+8xtw/QYYa4P0n5tDv4mt3xwNbo8yRwUKvWN+L/RWk0R+ts8TvFPgHiMk+DkiCT6qLM6XwFibOT7HjZPEHd+hcXNSWY6wnVSWfnsUdO23UNlA2IA+oM0xuqzPhW0NSdjmCghbNCFBzRMRthigsAFjbeYJCFsMATeFScJWmC9sOUhhiwX6QVXYYgWELa4sJ8+hwZmFBGcRnNGy+0ZFBMBZ1O9Vl1N9FCWoSLGy/lfPYgS7i5PU07luPAmk60iVdwkBDJQgYKAkCQMliRhg8WG+QBXNwMACke6rFLD7AsbaIP3n5lCpsux9owTo+2JKB12IKS1Q6JXR6EISoO98KBuA05QVAGc5EXBC3/dbPgCnKS8AzpNFwAmV9VOC9RtzigA4Kyis31Qg9C8VBXr3igS7TyX17qcSe/fXSes3lQQwUImAgcokDFQmr98w+PCwwPoNAwMLa+HFKSoKv35TBbh+A4y1QfrPzaEqYus3VYPbo0xVgUKvmt8LvTdIIr/I5wneKXCrERL8YpEEXx2Y4IGxNot9jhsniVcn4KYGqTisQb89Crv2Gx8Im4kXELaafhe2DSRhWyIgbDUJCWqpiLDVAgobMNZmqYCw1SLgpjZJ2GrzhQ36vt/Tgn0jc5qAsJ0usm8Efd9vnWDfyNQRAGddhX2jugQVqSewZ1CPYPcZJPU8g7hnsJFUedcXwEB9AgYakDDQgLxvxODDMoEqmoGB5SLd15nA7gsYa4P0n5tDZ/L3jaDvizkr6ELMWQKFXkORLgT6zodGAThNIwFwhkTACX3frwnAaYwAOBNEwAmV9cRg/cYkCoAzSWH9JonQvyQL9O7JBLtTSL17CrF3f5+0fpMqgIFUAgbSSBhII6/fMPiwQmD9hoGBlbXw4hQVhV+/SQeu3wBjbZD+c3MoXWz9pnFwe5RpLFDoNfF7ofcBSeSf83mCdwrcJoQEv0okwTcFJnhgrM0qn+PGSeJNCbhpRioOm/Fvj4Ku/TYPhM00FxC2Fn4Xti0kYVstIGwtCAlqjYiwtQQKGzDWZo2AsLUk4KYVSdha8YUN+r7f1sG+kWktIGxtRPaNoO/7bRvsG5m2AuBsp7Bv1I6gIu0F9gzaE+zuQFLPDsQ9g62kyrujAAY6EjDQiYSBTuR9IwYf1gpU0QwMrBPpvjoDuy9grA3Sf24OdabvGyVC3xfTJehCTBeBQu9sjS4kEfrOh64BOE1XAXB2EwEn9H2/3QNwmu4C4OwhAk6orJ8TrN+YcwTA2VNh/aYnoX/pJdC79yLYfS6pdz+X2Lt/Tlq/6S2Agd4EDPQhYaAPef2GwYdXBdZvGBhYXwsvTlFR+PWbvsD1G2CsDdJ/bg71FVu/OS+4PcqcJ1Done/3Qm8HSeTf8HmCdwrc8wkJfoNIgu8HTPDAWJsNPseNk8T7EXDTn1Qc9qffHoVd+70gEDZzgYCwXeh3YdtJEra3BYTtQkKC2igibAOAwgaMtdkoIGwDCLgZSBK2gXxhg77v96Jg38hcJCBsGSL7RtD3/WYG+0YmUwCcWQr7RlkEFckW2DPIJtidQ1LPHOKewW5S5Z0rgIFcAgYGkTAwiLxvxODDJoEqmoGBzSLd18XA7gsYa4P0n5tDF/P3jaDvi7kk6ELMJQKF3qUiXQj0nQ+DA3CawQLgvEwEnND3/V4egNNcLgDOISLghMr60GD9xgwVAOcVCus3VxD6lysFevcrCXYPI/Xuw4i9+7ek9ZvhAhgYTsDAVSQMXEVev2Hw4QOB9RsGBrbUwotTVBR+/eZq4PoNMNYG6T83h64WW78ZEdweZUYIFHoj/V7o7SOJ/Mc+T/BOgTuSkOC3iiT4UcAED4y12epz3DhJfBQBN9eQisNr+LdHQdd+RwfCZkYLCNsYvwvbfpKwbRMQtjGEBLVdRNiuBQobMNZmu4CwXUvAzXUkYbuOL2zQ9/2ODfaNzFgBYRsnsm8Efd/v9cG+kbleAJw3KOwb3UBQkfECewbjCXZPIKnnBOKewUFS5X2jAAZuJGDgJhIGbiLvGzH4sEOgimZgYKdI9zUR2H0BY22Q/nNzaCJ93ygJ+r6YSUEXYiYJFHo3a3QhSdB3PtwSgNPcIgDOySLghL7vd0oATjNFAJy3ioATKuu3Bes35jYBcE5VWL+ZSuhfpgn07tMIdt9O6t1vJ/buv5DWb+4QwMAdBAxMJ2FgOnn9hsGHXQLrNwwM7K6FF6eoKPz6zQzg+g0w1gbpPzeHZoit39wZ3B5l7hQo9O7ye6F3mCTye3ye4J0C9y5Cgt8rkuBnAhM8MNZmr89x4yTxmQTczCIVh7Pot0dh137vDoTN3C0gbPf4XdiOkIRtn4Cw3UNIUPtFhG02UNiAsTb7BYRtNgE3c0jCNocvbND3/d4b7BuZewWE7T6RfSPo+37nBvtGZq4AOOcp7BvNI6jI/QJ7BvcT7H6ApJ4PEPcMjpEq7/kCGJhPwMACEgYWkPeNGHw4IFBFMzBwUKT7ehDYfQFjbZD+c3PoQf6+EfR9MQ8FXYh5SKDQe1ikC4G+82FhAE6zUACcj4iAE/q+30cDcJpHBcC5SAScUFlfHKzfmMUC4HxMYf3mMUL/8rhA7/44we4lpN59CbF3L1yas36zVAADSwkYeIKEgSfI6zcMPvwksH7DwMChWnhxiorCr988CVy/AcbaIP3n5tCTYus3y4Lbo8wygUJvud8LvViSyB/2eYJ3CtzlhAR/RCTBPwVM8MBYmyM+x42TxJ8i4OZpUnH4NP/2KOja74pA2MwKAWFb6XdhiyMJ21EBYVtJSFDHRITtGaCwAWNtjgkI2zME3DxLErZn+cIGfd/vc8G+kXlOQNhWiewbQd/3+3ywb2SeFwDnCwr7Ri8QVGS1wJ7BaoLda0jquYa4Z1CcVHm/KICBFwkYeImEgZfI+0YMPhSqfWJiILo2XpyiovDd11pg9wWMtUH6z82htfR9o2To+2LWBV2IWSdQ6L2s0YUkQ9/58EoATvOKADhfFQEn9H2/6wNwmvUC4HxNBJxQWX89WL8xrwuA8w2F9Zs3CP3LBoHefQPB7jdJvfubxN69LGn95i0BDLxFwMDbJAy8TV6/YfAhVmD9hoGBOJH1m43A9RtgrE0caf1mo9j6zTvB7VHmHYFC712/F3rlSCJfzOcJ3ilw3yUk+OIiCX4TMMEDY22KCxQGmwi42UwqDjfTb4/Crv2+FwibeU9A2N73u7CVJwlbKQFhe5+QoEqLCNsHQGEDxtqUFhC2Dwi42UISti18YYO+7/fDYN/IfCggbB+J7BtB3/f7cbBvZD4WAOdWhX2jrQQV+URgz+ATgt2fktTzU+KeQUVS5b1NAAPbCBjYTsLAdvK+EYMP5QSqaAYGyot0X58Buy9grE150r7RZ/x9I+j7Yj4PuhDzuUCht0OkC4G+82FnAE6zUwCcX4iAE/q+3y8DcJovBcC5SwScUFnfHazfmN0C4PxKYf3mK0L/8rVA7/41we49pN59D7F3r0Zav9krgIG9BAx8Q8LAN+T1GwYfKgis3zAwUFFk/eZb4PoNMNamImn95lux9Zt9we1RZp9Aobff74VedZLIVxa4PWo/IcFXEUnw3wETPDDWpopAYfAdATffk4rD7/m3R0HXfg8EwmYOCAjbQb8LWw2SsFUXELaDhARVQ0TYfgAKGzDWpoaAsP1AwM2PJGH7kS9s0Pf9/hTsG5mfBITtkMi+EfR9vz8H+0bmZwFw/qKwb/QLQUUOC+wZHCbYfYSknkeIewa1SZX3rwIY+JWAgd9IGPiNvG/E4EMtgSqagYHaIt3XUWD3BYy1qU3aNzpK3zdKgb4v5ljQhZhjAoVeVDmJLiQF+s6Hk8oF4DypnP/nWEgEnND3/UYH4DTRAuCMEQEnVNYL44yWXb8pLADOWPQcGes3ziTR/Usc2HBG3xZHsLsI0G533+FcN54E0jNI6zdFBTBQlICBYiQMFCvHXb9h8KGOwPoNAwN1RdZviuOwaoCxNnVJ6zfFy2mt35TAxUf29qgSAoVeSb8XevVJIl9f4PaokoQE30AkwZcCJnhgrE0DgcKgFAE3pUnFYely7NujsGu/ZQJhM2UEhK2s34WtAUnYGgoIW1lCgmokImzlgMIGjLVpJCBs5Qi4KU8StvJ8YYO+7/fkYN/InCwgbKeI7BtB3/dbIdg3MhUEwFlRYd+oIkFFThXYMziVYHclknpWIu4ZNGI9Si6AgcoEDFQhYaAKed+IwYcEgSqagYFEke6rKrD7AsbaJJL2jary942g74upFnQhpppAoVddpAuBvvOhRgBOU0MAnPEi4IS+77dmAE5TUwCctUTACZX12sH6jaktAM7TFNZvTiP0L6cL9O6nM+5zJPXudYi9ezJp/aauAAbqEjBQj4SBeuT1GwYfUgTWbxgYSBVZvzkDuH4DjLVJJa3fnCG2flM/uD3K1Bco9Br4vdBLIYl8Y4HboxoQEnwTkQR/JjDBA2NtmggUBmcScHMWqTg8i397FHTtt2EgbKahgLA18ruwpZKErbmAsDUiJKgWIsIWAgobMNamhYCwhQi4MSRhM3xhg77vNyHYNzIJAsKWKLJvBH3fb1Kwb2SSBMCZrLBvlMxYLxbYM0hhrBeT1DOVuGfQhFR5pwlgII2AgXQSBtLJ+0YMPrQWqKIZGGgj0n01BnZfwFibNqR9o8b0faNU6PtimgRdiGkiUOg11ehCUqHvfGgWgNM0EwBncxFwQt/32yIAp2khAM6WIuCEynqrYP3GtBIAZ2uF9ZvWjP5FoHdvQ7C7Lal3b0vs3VuR1m/aCWCgHQED7UkYaE9ev2Hwob3A+g0DAx1E1m86ANdvgLE2HUjrNx3E1m86BrdHmY4ChV4nvxd6rUki31ng9qhOhATfRSTBdwYmeGCsTReBwqAzAzek4rAL/fYo7Nrv2YGwmbMFhK2r34WtDUnYugkIW1dCguouImzdgMIGjLXpLiBs3Ri4IQlbd76wQd/32yPYNzI9BITtHJF9I+j7fnsG+0ampwA4eynsG/UiqMi5AnsG5xLs7k1Sz97EPYMOpMq7jwAG+hAw0JeEgb7kfSMGH3oKVNEMDPQS6b7OA3ZfwFibXqR9o/P4+0bQ98WcH3Qh5nyBQq+fSBcCfedD/wCcpr8AOC8QASf0fb8XBuA0FwqAc4AIOKGyPjBYvzEDBcB5kcL6zUWE/iVDoHfPINidSerdM4m9e1fS+k2WAAayCBjIJmEgm7x+w+BDH4H1GwYG+oqs3+QA12+AsTZ9Ses3OWLrN7nB7VEmV6DQG+T3Qq8bSeT7CdweNYiQ4PuLJPiLgQkeGGvTX6AwuJiAm0tIxeEl/NujoGu/lwbCZi4VELbBfhe27iRhGyAgbIMJCWqgiLBdBhQ2YKzNQAFhu4yAm8tJwnY5X9ig7/sdEuwbmSECwjZUZN8I+r7fK4J9I3OFADivVNg3upKgIsME9gyGEeweTlLP4cQ9g16kyvsqAQxcRcDA1SQMXE3eN2LwIVOgimZgIEuk+xoB7L6AsTZZpH2jEUQO9bE51NHTQuDrOtdExXukQE4eSeDjKFJOHkXGE0OXrxHAwDUEDIwmYWA0WZcZfMgV0GUGBgaJ6PIYoC4DY20GkXR5jMf9HGifXgv0aalauGuVrsXx6bXEvNSjVFTUeQRtuo6Uo6/7G/gKFexjkPhy+6GgPh1L8ulYIr6cmvd1Ar4u9bnuOfVe8TJ4uweL6N44IIeAsTaDfY4bhy9vEPgyRIAvJQh8GSrCl+uBfAHG2gwV4MsGAl+GCfClJIEvw0X4cgOQL8BYGxX/jQf6rxywhypP6qHGM9f3SD3UBFK9PyECPRQSXxOAPdSNJJ/eSMRXXxK+RgisHZ5C0LiRIjn6JiCHgLE2I0lrhze51onRWDqPxKHRAhyqRODQGBEOTQRyCBhrM4bEoYlEDjm91psEDo0V6LWqEjg0ToRDk4AcAsbajBNYm3iLwJfxAnypTuDLBBG+3AzkCzDWRsV/twD9Vx24NlGDtDZxC7F3vJBU904m9dGTI7A2gcTXZODaxBSST6dE4J6MW4E+rQXkbG0SZ28lcvYiEmdvI+HrtghwFomv24CcnUry6VTyPRlvE/A1UaAubUioSyeJ1FXTgBwCxtpMEujjNjJqKAG+hAh8mSLCl9uRdSKQL1ME+PIOgS9TBfiSQODLNBG+3AHkCzDWRsV/04H+qwPsoeqSeqjpxBo3l9RDzSDV+zMi0EMh8TUD2EPdSfLpnUR8DSLha7rAfnJTgsbNEMnRdwE5BIy1QfrPzaG7iPvJF5M4NFOAQy0JHJolwqGZQA4BY21mkTg0k3xPxrsEDs0W6LXaEDg0R4RDs4AcAsb6/7H3JeA2le37xzxlCJkzFkVxXvNQVIqiKIqiyFwIGYuKEoqiKIpQKYqiEEUIRVEUoiiKolIpiqLyX+v7zv5a7TY5j/s+v3X/W/u63utwznr2+0z3M71rr+0mCcwmNhDwMkUAL5cQ8DJVBC+PAfECtLVT0d/jQP1VBs4mqpBmE48Te8dbSHXvRFIfPTENZhNI/5oInE1MIul0Uhrck/EEUKfVgZitQcLsE0TM9iJhdjLJvyanAWaR/jUZiNkpJJ1OId+TsZHgX08L1KXXEOrSaSJ11VQghoC2dtME+rhNBLxMF8BLSwJeZojg5UkgXoC2djME8PIhAS8zBfByHQEvs0Tw8hQQL0BbOxX9PQ3UX21gD1WH1EM9Taxx+5N6qGmken9aGvRQSP+aBuyhniHp9Bmifw0g+ddsgfPkDoQcN0ckRj8LxBDQ1g6pvyCGniWeJ99GwtBcAQx1IWBongiGpgMxBLS1m0fC0HTyPRmbCRhaINBrdSVgaKEIhmYAMQS0tVsoMJvYQsDLIgG8dCfgZbEIXp4D4gVoa6eiv+eB+msAnE00JM0mnif2jneS6t6ZpD56ZhrMJpD+NRM4m5hF0umsNLgn4wWgThsBMduYhNkXiJgdQsLsiyT/ejENMIv0rxeBmJ1N0uls8j0ZHxH8a6lAXXoHoS5dJlJXzQFiCGhrt0ygj/uYgJcVAni5i4CXlSJ4eQmIF6Ct3UoBvGwl4GWVAF6GEPCyWgQvLwPxArS1U9HfXKD+mgB7qKakHmouscYdTuqh5pHq/Xlp0EMh/WsesIeaT9LpfKJ/jSD51xqB8+SRhBy3ViRGvwLEENDWDqm/IIZeIZ4n30fC0DoBDI0mYGi9CIYWADEEtLVbT8LQAvI9GdsIGNog0Gs9TMDQRhEMLQRiCGhrt1FgNvEJAS+bBfAyjoCXLSJ4eRWIF6CtnYr+XgPqrxVwNtGaNJt4jdg7PkiqexeR+uhFaTCbQPrXIuBsYjFJp4vT4J6M14E6bQPEbFsSZl8nYvYhEmaXkPxrSRpgFulfS4CYXUrS6dI0wOwyoE7bAzHbgYTZZUTMjiNh9g2Sf72RBphF+tcbQMwuJ+l0Ofk+qhmEnmpryHvJGz253yTgaptIL7QCiCGgrd02gdnLcwS8bA+53O1IeNkhgpeVQLwAbe12CODleQJedoZc7vYkvOwSwcubQLwAbe1U9PcWUH+dgT1UF1IP9Raxxn2c1EOtItX7q9Kgh0L61ypgD7WapNPVRP+aSPKv3QL3gLxMyO17RGL020AMAW3tkPoLYuht4j0gk0gY+kYAQ/MJGNorgqF3gBgC2trtJWHoHfJ9VAsIvvR9yDHUgdRr7RPB0BoghoC2dir6WwvUX29gr9WH1GutJdbCU0l5/F1SX/BuGvRaSP96F9hrvUfS6Xvk86olhBy3P+Q5riMpxx0QidHrgBgC2todCLnf+HhZSsDLwZDL3YmEl0MieFkPxAvQ1u6QAF6WEfByOORydybh5YgIXt4H4gVoa6eivw+A+usP7KEGkHqoD4g17rOkHmoDqd7fkAY9FNK/NgB7qI0knW4k+td0kn/9ITBrX03I7UdFYvQmIIaAtnZI/QUxtIk4a59BwlD6M8KPoTUEDGU4QwNDHwIxBLS1Q+oviKEPyedV7xJ8KXPIMdSF1GtlEcHQZiCGgLZ2KvrbAtTfPcBeayip19pCrIVnkfL4R6S+4KM06LWQ/vURsNf6mKTTj8nnVZsIOS57yHPcTaQcl0MkRm8FYghoa5cj5H7zn+/nIuAlV8jlvpmEl9wieNkGxAvQ1i63AF4+IuAlb8jl7krCSz4RvHwCxAvQ1k5Ff58C9Tcc2EONIPVQnxJr3JdJPdR2Ur2/PQ16KKR/bQf2UDtIOt1B9K+5JP8qIDBr30nI7QVFYvRnQAwBbe0KkmbtnxFn7fNIGCoigKHdBAwVFcHQ50AMAW3tipIw9Dn5vOprgi8VDzmGupF6rRIiGNoJxBDQ1k5Ff7uA+hsL7LXGkXqtXcRaeCEpj39B6gu+SINeC+lfXwB7rS9JOv2SfF61n5DjSoc8x3Un5bgyIjF6NxBDQFu7MgLz958IeCkbcrlvIeGlnAhe9gDxArS1KyeAl4MEvJQPudw9SHipIIKXr4B4Adraqejva6D+xgN7qAmkHuprYo27hPWsKVK9/00a9FBI//oG2EPtJel0L9G/lpL8q6LArD3pVLzclURi9LdADAFt7SqRZu3fEmfty0gYqiyAoYwEDFURwdB3QAwBbe2qkDD0Hfm8KgvBl6qHHEM9Sb1WDREMfQ/EENDWTkV/+4D6exrYa00j9Vr7iLXwSlIe/4HUF/yQBr0W0r9+APZaP5J0+iP5vCoPIcfVDnmO60XKcXVEYvR+IIaAtnZ1BObveQl4qRtyuW8l4aWeCF4OAPECtLWrJ4CX/AS8XBRyuXuT8FJfBC8/AfECtLVT0d/PQP1NB/ZQM0g91M/EGvcdUg91kFTvH0yDHgrpXweBPdQhkk4PEf1rDcm/GgjM2osTcntDkRj9CxBDQFu7hqRZ+y/EWftaEoYaCWCoNAFDjUUw9CsQQ0Bbu8YkDP1KPq86k+BLTUKOoT6kXqupCIYOAzEEtLVT0d8RoP7mAnuteaRe6wixFl5PyuO/kfqC39Kg10L612/AXut3kk5/J59XVSTkuGYhz3F9STmuuUiM/gOIIaCtXXOB+XsyAS8tQi53PxJeWorg5SgQL0Bbu5YCeKlMwEurkMvdn4SX1iJ4ScoH9CEgXlT0lw6ovwXAHmohqYfy5S2Z8r5oLH7I+m6UfBxdpM/H76GQ/hXUw0l/7wpJpxmI/rWZ5F9tBGbt5xFye1uRGJ0RiCGgrV1b0qzdl5c1a99CwlB7AQxdQMBQBxEMZQJiCGhr14GEoUxEDPm9Vn2CL3UOOYYGkHqtLiIYygzEENDWTkV/WYD6WwHstVaSeq0sxFp4GymPZyX1BVnToNdC+ldWYK+VjaTTbET/8nPc5YQc1zXkOe42Uo7rJhKjswMxBLS16yYwf29CwEuPkMt9OwkvPUXwkgOIF6CtXU8BvFxJwEvvkMs9kISXPiJ4OQWIF6CtnYr+cgL1twrYQ60m9VA5iTXu56QeKhep3s+VBj0U0r9yAXuo3CSd5ib6106Sf/UXmLW3IuT2ASIxOg8QQ0BbuwGkWXse4qx9FwlDAwUw1IaAoUEiGDoViCGgrd0gEoZOJZ9XtSP40l0hx9AgUq81WARDeYEYAtraqegvH1B/G4C91kZSr5WPWAvvIeXx/KS+IH8a9FpI/8oP7LVOI+n0NPJ5VVdCjrsn5DnuDlKOGyoSowsAMQS0tRsqMH/vTsDL8JDLfScJLyNE8FIQiBegrd0IAbz0IOBlZMjlvouEl1EieCkExAvQ1k5Ff4WB+tsM7KG2kHqowsQa9ztSD1WEVO8XSYMeCulfRYA9VFGSTosS/et7kn+NFpi130bI7WNEYnQxIIaAtnZjSLP2YsRZ+z4ShsYKYOgOAobGiWDodCCGgLZ240gYOp18XjWY4EvjQ46hwaRea4IIhooDMQS0tVPRXwmg/nYCe61dpF6rBLEWPkDK4yVJfUHJNOi1kP5VEthrlSLptBT5vOo+Qo6bGPIcN4SU4yaJxOjSQAwBbe0mCczfRxLwMiXkct9NwstUEbyUAeIFaGs3VQAvDxDw8nTI5b6HhJdpIng5A4gXoK2div7OBOpvN7CH2kPqoc4k1ri/knqosqR6v2wa9FBI/yoL7KHKkXRajuhfh0n+NV1g1j6ekNtniMTos4AYAtrazSDN2s8iztqPkDA0UwBDEwkYmiWCobOBGALa2s0iYehs8nnVZIIvzQ45hoaSeq05IhgqD8QQ0NZORX8VgPrbD+y1DpB6rQrEWvgoKY+fQ+oLzkmDXgvpX+cAe61zSTo9l3xeNZ2Q4+aGPMfdS8px80RidEUghoC2dvME5u/PEfCyIORyDyPhZaEIXiohv08GiJeFAniZScDLopDLPZyEl8UieEkG4gVoa6eiPwfU30FgD3WI1EM5Yo2bKTenh6pMqvcrp0EPhfSvysAeqgpJp1WI/pWZ5F9LBWbt8wm5fZlIjK4KxBDQ1m4ZadZelThrz0LC0AoBDL1KwNBKEQxVQ353DBBDK0kYqkY+r1pM8KVVIcfQCFKvtVoEQ9WRzw4HYkhFfzWQ3+VaBvdeGcpwYlANYi2cg5THa5L6gppp0Gsh/asmsNeqRdJpLfJ51ZuEHLcm5DnuPlKOWysSo2sDMQS0tVsrMH9fRcDLupDLfT8JL+tF8FIHiBegrd16Aby8TcDLhpDLPZKEl40ieDkP+UxwIF5U9Hc+UH+ZgT1UFlIPdT6xxj2V1EPVJdX7ddOgh0L6V11gD1WPpNN6RP/KS/KvzQKz9g2E3L5FJEZfgHxmKzDHbSHN2i8gztrzkTC0VQBDmwkY2iaCoQuBGALa2m0jYehC8nnVxwRf2h5yDI0i9Vo7RDB0ERBDQFs7Ff3VB+ovL7DXykfqteoTa+GCpDx+MakvuDgNei2kf10M7LUuIen0EvJ51U5CjtsZ8hz3ACnH7RKJ0Q2Qz2wF5rhdAvP3Lwh42R1yuR8k4WWPCF4aIp/PBcTLHgG87Cbg5ZuQyz2ahJe9Ini5FIgXoK2div4uA+qvALCHKkjqoS4j1rink3qoRqR6v1Ea9FBI/2oE7KEak3TamOhfxUn+9b3ArP0HQm7fJxKjLwdiCGhrt480a7+cOGsvQcLQfgEM/UTA0AERDF2BfBYXEEMHSBi6gnxedYjgSwdDjqExpF7rkAiGmiCfxQDEkIr+mgL1VxrYa5Uh9VpNibVwGVIev5LUF1yZBr0W0r+uBPZaV5F0ehX5vCopL96/Doc8xz1EynFHRGJ0MyCGgLZ2RwTm7+kJePkj5HI/TMLLURG8NAfiBWhrd1QALxkJeEl/ZrjlHkvCS4YzNfByNfIZCziZnYr+rkF+vxCwhypH6qGuIda4Z5N6qBaker9FGvRQSP9qAeyhWpJ02pLoX+VJ/pU55DnOn7XnIuT2LCIx+lrkZ2CBOQ6pvyCGriXO2iuQMJRdAEN5CRjKIYKh64AYAtra5SBh6DryedVpBF/KFXIMjSP1WrlFMNQKiCGgrZ2K/lojn40N7LWqkHqt1sRauBIpj19P6guuT4NeC+lf1wN7rRtIOr2BfF5VnJDj8oY8xz1CynH5RGJ0G+RnYIE5Ll/I/cbHS0kCXgqEXO5HSXgpKIKXtsjPOwDxUlAAL6UJeCkScrnHk/BSVAQvNwLxArS1U9FfO6D+qgN7qBqkHqodscatRuqh2pPq/fZp0EMh/as9sIfqQNJpB6J/VSf5V3GBWfs5hNxeQiRGdwRiCGhrV4I0a+9InLXXIGGotACGkgkYKiOCoU7IzzYAMVSGhKFO5POqKgRfKhtyDE0g9VrlRDDUGXlvGxBDKvrrAtTfRcBeqz6p1+pCrIXrkPL4TaS+4KY06LWQ/nUTsNe6maTTm8nnVecRclz5kOe4x0g5roJIjO4KxBDQ1q6CwPy9LgEvFUMu9+MkvFQSwUs3IF6AtnaVBPByAQEvlUMu90QSXqqI4KU78p41IF5U9HcLUH8NgD1UQ1IPdQuxxr2Q1EP1INX7PdKgh0L6Vw9gD9WTpNOeRP+6iORf1QVm7Y0Iub2GSIzuhbynAJjjapBm7b2Is/b6JAzVFsBQEwKG6ohg6FYghoC2dnVIGLqVfF51FcGX6oYcQ5NIvVY9EQz1Rn4XKRBDKvrrA9RfM2Cv1ZzUa/Uh1sINSXm8L6kv6JsGvRbSv/oCe61+JJ32I59XtSLkuItCnuOeIOW4+iIxuj/yngJgjqsvMH+/noCXBiGXezIJLw1F8DIAOT8G4qWhAF7aEPDSKORyTyHhpbEIXm5Dfj8OEC8q+rsd+bw2YA/VktRD3U6sca8g9VADSfX+wDTooZD+NRDYQw0i6XQQ0b+akPyricCs/SZCbm8qEqPvAGIIaGvXlDRrv4M4a29KwlAzAQx1J2CouQiG7kTOioEYak7C0J3k86qeBF9qEXIMTSX1Wi1FMHQXslcAYkhFf4ORzxoA9lodSL3WYGIt3JyUx4eQ+oIhadBrIf1rCLDXupuk07tPQKcny/s9QJ12BmK2Cwmz9xAx24KE2aEk/xqaBphF+tdQIGbvJen03hSdZvJW9qQ/fSH4QvtdlSSsLLHXsHxEhoflw7/vcKCDsOQenu9PBYPe9y9FXXowz3flxel0BDAYJLLPyfJXNcU+aB1WBfJ4Xz6s36B93LfxffnwtrmfFLDvDwTszCkr/hXmgM3ks7IIn06Ez2AsTT7JVyL+ThZj1bz3yJiEj38Zge9VjWTrJKzMfymkRgbiIdypkAnBD4I5Ag4QfKH5RlTgnf/7YhjSxf4R1MWolOLtgXwpCollkVEpFg7+7oE0aK/uPfmKt3IK+t0oYPX8ANi46Ejng2YUqRIHA6XmvaSK6kFSRfUgccTij1duJIxYWgkcb64gHEm1FjlaGA3sHIG2dq1D7jc+XtoR8NJGAC8rCXhpK4KXMUC8AG3t2grgpT3jEfICeHmTgJcOInh5CHl0DcRLBwG8dCDgpbMAXtYQ8NJFBC8PI4+NgXjpIoCXjgS8dBXAyzoCXrqJ4GUsEC9AW7tuAnjpxHhEmgBe1hPw0lMEL+OQj4ED4qWnAF46E/DSWwAv7xPw0kcEL48A8QK0tesjgJcuBLz0F8DLZgJeBojg5VEgXoC2dgME8HIT4yPAAnjZSsDLIBG8jEd+zBmIl0ECeLmZgJe7BPCyjYCXwSJ4mQDEC9DWbrAAXroS8HKPAF4+IeBlqAheHgPiBWhrN1QAL90IeBkugJedBLyMEMHL40C8AG3tRgjgpTsBLyMF8LKbgJdRIniZCMQL0NZulABebiHgZbQAXvYQ8DJGBC+TgHgB2tqNEcBLDwJexgrg5SsCXsaJ4OUJIF6AtnbjBPDSk4CX8QJ4+Z6AlwkieJkMxAvQ1m6CAF56EfAyUQAv+wl4mSSClylAvABt7SYJ4OVWAl6mCODlAAEvU0XwMhWIF6Ct3VQBvPQm4OVpAbz8RMDLNBG8PAnEC9DWbpoAXvoQ8DJdAC+HCXiZIYKXp4B4AdrazRDAS18CXmYK4OUPAl5mieDlaSBegLZ2swTw0o+Al9kCeDlKwMscEbxMA+IFaGs3RwAv/Ql4mSuAlyTCM4LmieDlGSBegLZ28wTwMoCAlwUCeMlMwMtCEbw8C8QL0NZuoQBebiPgZZEAXrIT8LJYBC/TgXgB2totFsDL7QS8LBXASw4CXpaJ4GUGEC9AW7tlAngZSMDLCgG8nELAy0oRvDwHxAvQ1m6lAF4GEfCySgAveQl4WS2Cl+eBeAHa2q0WwMsdBLysEcBLAQJe1orgZSYQL0Bbu7UCeLmTgJd1AngpSMDLehG8zALiBWhrt14AL3cR8LJBAC+FCHjZKIKXF4B4AdrabRTAy2ACXjYL4KU4AS9bRPDyIhAvQFu7LQJ4GULAy1YBvJQm4GWbCF5mA/ECtLXbJoCXuwl42S6AlzIEvOwQwcscIF6AtnY7BPByDwEvOwXwcgYBL7tE8PISEC9AW7tdAngZSsDLbgG8lCfgZY8IXl4G4gVoa7dHAC/3EvDyjQBeKhLwslcEL3OBeAHa2u0VwMswAl6+F8BLJQJe9ongZR4QL0Bbu30CeBlOwMt+AbwkE/ByQAQv84F4AdraHRDAywgCXg4K4KU6AS+HRPDyChAvQFu7QwJ4uY+Al8MCeKlNwMsREbwsAOIFaGt3RAAv9xPw8ocAXuoQ8HJUBC8LgXgB2todFcDLSAJe0pcNP17OI+AlQ1kNvLwKxAvQ1i5DyP3Gx8soAl4yC+DlIgJesojg5TUgXoC2dlkE8PIAAS/ZBfDSgICXHCJ4WQTEC9DWLocAXh4k4CWXAF4aEvCSWwQvi4F4Adra5RbAy2gCXvIK4OVSAl7yieDldSBegLZ2+QTwMoaAlwICeGlCwEtBEbwsAeIFaGtXUAAvDxHwUkQAL80IeCkqgpelQLwAbe2KCuDlYQJeigvgpTkBLyVE8LIMiBegrV0JAbyMJeCltABeribgpYwIXt4A4gVoa1dGAC/jCHgpK4CXVgS8lBPBy3IgXoC2duUE8PIIAS/lBfDShoCXCiJ4WQHEC9DWroIAXh4l4KWiAF7aEvBSSQQvK4F4AdraVRLAy3gCXioL4OVGAl6qiODlTSBegLZ2VQTwMoGAl+oCeOlMwEsNEby8BcQL0NauhgBeHiPgpbYAXroS8FJHBC+rgHgB2trVEcDL4wS81BXASzcCXuqJ4GU1EC9AW7t6AniZSMDLRQJ46U7AS30RvLwNxAvQ1q6+AF4mEfDSQAAvvQl4aSiCl3eAeAHa2jUUwMsTBLw0EsBLfwJeGovgZQ0QL0Bbu8YCeJlMwEsTAbwMIOClqQhe1gLxArS1ayqAlykEvDQTwMttBLw0F8HLu0C8AG3tmgvgZSoBLy0E8HIXAS8tRfDyHhAvQFs7pP4yeu9RzVtDUt5vtCfzGG895K3VeZOS3vbWO9562Pv/e97Psd7Pcd56xFsbvf9v8taH3nrU+//H3s/x3s8J3nrMWzu8/3/mrc+99bj3/y+9nxO9n5O89YS39nr//9Zb33lrsvf/H72fU7yfU731pLcOef//xVu/eusp7/+/ez+f9n5O89Yz3srgrYzeyuStZ72VzVv+d8D732vtf1dvbm/l8dap3vK/i/Q0b/nfseh/b5z/XVhFvVXMW6d7y/+un1Le8r/DxP9eBv9Z8+W8dZa3zvaW/yztc73lPyPYf+6p/yzHKt6q6q1q3vKfVVfLW/4zuPznCvnPSqnn+4+3LvSW/yyIS7zlf8bd/9yu/1nExt663FtXeMv/rNVV3vI/Q+LfF+/f69vSW9d66zpv+fcy3uAt/x4t/74T/yy9g7c6equTt/yzwpu95Z+B+HNdf1bV01u9vHWrt/xevJ+3/B7Dr5v8XDDIW3d4607ftt66O9+fWALHkpr3eu99HyGWrMNhNDlDChbiX6j3J+nWIXXA4nE9mkc0g1WSOA7aipzkT5Y/X+b1BLlbk5J8RqJjnqzM7wMLBqDfOKQtyEHSxd7v3xgk3w95kPxfFk8PFvw+IAg/ACrR11+GFD3671uSY3gJvW6IKi23QSCIbAx7peW/H6PSaiNQaW0kyN1WpNLaCAxGm4CVFtBvXNuo0pIIkpv+pZVWZWRF8CGp0vpQr9KC6nVzVGm5zQJBZAs7iCAqji2EiqO9SMWxBQjKj0I622kfVRwSweKjf2nFUQWZGT8mVRwf61UcUL1ujSoOt1UgiGxTqDh8JjOABO9YrWpV1z654335OEo8WXk/0QEOLfsqAOeTf2n2rYrMEp+Ssu+netkXqtftUfZ12wWCyA6F7LuDcIy4A+jsn0UZU8LZP/uXZsxqyMj+OSljfq6XMaF63RllTLdTIIjsCnvGjN3+jupXU14uI/C9qgHl/QJsEEYFs4twYtEx5B+18eX+giB3J5GTml3A5PAlcFYE9BvXKTqpkUhaX/5LK9/qyAptN6ny3a1X+UL1uieqfN0egSDyVdjvwvWdciSh4rhJ4C7crwhy3yxSaX0FDEZfAystoN+4m6NKSyJIfv0vrbRqICuCb0iV1jd6lRZUr3ujSsvtFQgi34a90rorL+fzTt0FKq1vCXLfIlJpfQsMRt8BKy2g37hbokpLIkh+F/YgqfAJ6O9Jldb3KZVWJm9l8VbmpL+/GI87QcnC5LOyCJ9OhE+/GFHg84t8HD6TsHwmpw+85758//35g1/0oBUy3HvTqkl/D5AnG9SqAt9rOLBKCQbIfYFWNPZCJ4p9wETxI1APSUl4cPk2H54P/8BEli+d7HvtD7k9fH/ZT+iUDpAKlgOBgiVHAIvBF1pHywGJq/N/Xx0SsHuy7+1i/wjq4qeUhPBzvhSFxBT4U4qxg7/7OUGQQ9+WFFSi0bkqpziX+wkI0J/zYY2LBpIPzpgxgfZg3ErUzrcxI5gcJAWTg7w583+e3PwO4cnNvQSe3Dw4L17uW0We3HwImPCBtna3CjzpfA0BL30F8DKEgJd+Inj5BYgXoK1dPwG8rCXg5TYBvNxNwMvtInj5FYgXoK3d7QJ4eZeAlzsE8DKCgJc7RfByGIgXoK3dnQJ4eY+AlyECeLmPgJe7RfByBIgXoK3d3QJ4WUfAy70CeBlDwMswEbz8BsQL0NZumABe1hPwcp8AXh4i4OV+Ebz8DsQL0NbufgG8vE/AywMCeHmYgJcHRfDyBxAvQFu7BwXw8gEBLw8J4GUCAS8Pi+DlKBAvQFu7hwXwsoGAl0cE8PIYAS+PiuAlKT9Ol0Bbu0cF8LKRgJfHBPAylYCXx0Xwkg6IF6Ct3eMCeNlEwMsTAnh5koCXySJ4SQ/EC9DWbrIAXj4k4OVJAbw8RcDLUyJ4yQDEC9DW7ikBvGwm4OUZAbzMIODlWRG8ZATiBWhr96wAXrYQ8PKcAF6eI+DleRG8ZALiBWhr97wAXj4i4OUFAbzMIeDlRRG8ZAbiBWhr96IAXj4m4OUlAby8RMDLyyJ4yQLEC9DW7mUBvGwl4GW+AF5eJuDlFRG8ZAXiBWhr94oAXrYR8PKqAF4WEvDymghesgHxArS1e00AL58Q8PK6AF5eJeBliQhesgPxArS1Q+rPf3xidW+dlfJ+/mew/c+V+p+Vu9ez/TBvDfeW/1kg//MNo7x/j/aWf++2fz+qf4/dI97/H/XWeG/59xD590VM8v49xfcd79/+OZY/m3/G+/+z3pruLX/26M9TZnn/nu0tv1f0618/p8/3/v+KtxZ4y49Zvh0We/9emvdPW6s8fyEHzof+86jF6kl/f6Hen6Rbh9QBi8dT0DwyHv3HcNA3Qv48Wl9m3zjo910u8jzaoGOerMw5gQkN6DcOaQtykKQ9j1YhSOYMeZD8XxZPDxZ8P/CpWbmASgw+kcl/35Icw0voNXdUabncAkEkT9grLf/9GJXWmwKVVh5CpfWWSKWVB1hpnQqstIB+496KKi2JIHnqv7TSqoysCPKSKq28epUWVK/5okrL5RMIIvnZQQRRceQnVBxvi1Qc+YEVx2khne28HVUcEsHitH9pxVEFmRkLkCqOAnoVB1SvBaOKwxUUCCKFwj7bqZzEme2sEZjtFCJUWmtFKq1CwEqrMLDSAvqNWxtVWhJBsvC/tNKqiqwIipAqrSJ6lRZUr0WjSssVFQgixRRmOz6T6YmCnyyPp+s4Oy1jKjj76f/SjFkNGdmLkzJmcb2MCdVriShjuhICQaRk2GcTX5C+T3SdwGyiJGE2sV5kNlESWNGUAs4mgH7j1kezCYkgWepfWmlVR1YEpUmVVmm9Sguq1zJRpeXKCASRM8JeafkhnlFpbRCotM4gVFobRSqtM4CV1pnASgvoN25jVGlJBMkz/6WVVg1kRVCWVGmV1au0oHotF1VarpxAEDkr7JXWD6SZ1maBSussQqW1RaTSOgtYaZ0NrLSAfuO2RJWWRJA8+19aadVEVgTlSZVWeb1KC6rXClGl5SoIBJFzwl5p3UV6gNVWgUrrHEKltU2k0joHWGmdC6y0gH7jtkWVlkSQPPdfWmnVQlYEFUmVVkW9Sguq10pRpeUqCQSR5LBXWvtIM63tApVWMqHS2iFSaSUDKy0HrLSAfuN2RJWWRJB0YQ+SCk8MrEyqtCrzKi03wpP/PkLyqUJwev+VHszncKD9q+bHBiP4I589/qoSEm41kt9XI/r9j6Siq3p+btGVfHIv59u/OsEHapB8oAbRB1h42Bny7+Fg+cAuke/hqAmM00BbO6T+ghiqmYIh1SnDkizh57EWMu6rGur+rOHnsXZkqGQ3SsBQdSJDJbvuGcLP43lhnx343zvF6HHPF6j1zyfUeXVJtX5dYq3v93rnEXRRT8AH6hHkvoDkAxcQfYCFh90C/R7DB/aI9HsXAvs9oK3dHlK/d6F4vzdOoDq9KOxFzzBS0fNNyIOdn+gvIgS7vSLBrj4w2AFt7fYKJMn6BL+5mFQoXRzgNfZCH45WBd6hcAlOD1VVE9sl+cPPY4OwJ7bhpMT2vUBia0AIUPtEEltDYGID2trtE0hsDQl+cykpsV3KT2zVkYntsug+YHeZQGJrRLojCe2cNZDO2ThyTtdYwDkvF3HOakjnvAIndBVV57xCwDmbhL0lGEVqCZoKHO40JZR2V5JKuyvJB3xNCLq4SsAHriLI3YzkA83IB3wMPOwXaPEYPnBAZDTQHDgaANraHSAd8DUPYCj2CnOLfHVU6LmrBQq9a8Je6I0mFXotBJJ8C0KAb0lK8i3Jhd41BF1cK+AD1xLkvo7kA9eRCz0GHg4KFHoMHzgkUui1AhZ6QFu7Q6RCrxW/0GuHLPRaR+Nm11qg0LteZNzcHumcN0TO6W4QcM42Is7ZAemcbSPndG0FnPNGEeeEpvV20fzGtRNwzvZhn988QprfdBDo3TsQ+raOpN69I3l+056gi04CPtCJIHdnkg90Js9vGHg4LDC/YfjAEZH5TRfg/AZoa3eENL/pIja/uSn6kIa7SaDQuznshd6jpELvD4EPadxMCPBHRQJ8V2CAB9raHRUoDLoS/KYbqTjsxv+QBnT22z1KbK67QGK7JeyJbTwpsaUvF/7EdgshQGUoh3dK/4VObD2AiQ1oa5ch5H7jB/EeBL/pSUpsPemJzSUjE1uv6NzI9RJIbLdqnBs56DMfekfO6XoLOGcfkUPNzkjn7Bsdarq+As7ZL+wtwSRSS9Bf4ECrP6G0G0Aq7QaQDzX7EXRxm4AP3EaQ+3aSD9xOPtRk4CGzQIvH8IEsIqOBgcDRANDWDqm/IIYG0g81sS3yoKjQc4MECr07wl7oTSEVencKJPk7CQH+LlKSv4tc6N1B0MVgAR8YTJB7CMkHhpALPQYesgsUegwfyCFS6N0NLPSAtnY5SIXe3fxCryqy0LsnGje7ewQKvaEiZyHQh93dGzmnu1fAOYeJOCf0AT3DI+d0wwWcc4SIc0LT+n3R/MbdJ+Cc94d9fvMMaX4zUqB3H0no20aRevdR5PnN/QRdPCDgAw8Q5H6Q5AMPkuc3DDzkEpjfMHwgt8j8ZjRwfgO0tctNmt+MFpvfjIk+pOHGCBR6D4W90HuWVOjlFfiQxkOEAJ9PJMA/DAzwQFu7fAKFwcMEvxlLKg7H8j+kAZ39josSmxsnkNgeCXtim05KbAUEEtsjhABVUCSxPQpMbEBbu4ICie1Rgt+MJyW28fzEBn1ezITo3MhNEEhsj4mcG0Gf+fB45JzucQHnnCjinLWQzjkpOtR0kwSc84mwtwSzSC3BZIEDrcmE0m4KqbSbQj7UfIKgi6kCPjCVIPeTJB94knyoycBDEYEWj+EDRUVGA08BRwNAW7uipEPNp/iHmtAW+emo0HNPCxR608Je6M0mFXrPCCT5ZwgB/llSkn+WXOhNI+hiuoAPTCfIPYPkAzPIhR4DD8UFCj2GD5QQKfSeAxZ6QFu7EqRC7zl+odcJWeg9H42b3fMChd5MkXEz9GF3syLndLMEnPMFDeesDH1Az4uRc7oXBZxztkjkhKb1OdH8xs0RcM6Xwj6/mU+a37ws0Lu/TOjb5pJ697nk+c1LBF3ME/CBeQS555N8YD55fsPAQ2mB+Q3DB8qIzG9eAc5vgLZ2ZUjzm1fE5jcLog9puAUChd7CsBd6r5AKvbICH9JYSAjw5UQC/KvAAA+0tSsnUBi8SvCb10jF4Wv8D2lAZ7+LosTmFgkktsVhT2wLSImtvEBiW0wIUBVEEtvrwMQGtLWrIJDYXif4zRJSYltCT2yVoc+LWRqdG7mlAoltmcihJvSZD29EzuneEHDO5SLOWQXpnCuiQ023QsA5V4a9JVhMagneFDjQepNQ2r1FKu3eIh9qriToYpWAD6wiyL2a5AOryYeaDDxUFGjxGD5QSWQ08DZwNAC0tatEOtR8m36oiW2R34kKPfeOQKG3JuyF3lJSobdWIMmvJQT4d0lJ/l1yobeGoIv3BHzgPYLc60g+sI5c6DHwUFmg0GP4QBWRQm89sNAD2tpVIRV664kYWk7Kpe8LxNH3CRj6gBRHPyD7gJ9P04Pf139PlF43CPjTBoI/bST500ZyXmZgq7pAXmb4QA2RvLwJmJeBtnY1SHl5UwqG/P9XS/r7C20ztL8uyRJ+Hj9Exn1VQ92fNfw8bo4MlexGCRhqS2SoZNc9Q/h5/Cjsc1i/b/yIUO98LFDrf0yQeyup1t9KrPVXp/SOaF1sE/CBbQQf+ITkA5+Q+z0GHmoL9HsMH6gj0u99Cuz3gLZ2dUj93qfi/d44gep0e9iLnrdJCa9uyIOdX+xtJwS7eiLBbgcw2AFt7eoJJMkdBL/5jFQofZbCq2qQz5Yt/Dx+HvYg/w4pyF8kEOQ/J4C1vkiQ3wkM8kBbu/oCQX4nwW92kYL8LvEgn1MgyH8RzZmTXW4BQ32pMGf+khBddgvMGHcT5N5Diqp7iDPG90gV2VcCPvAVwQe+JvnA1+Q5MwMPDQSqK4YPNBSpyr8BVuVAW7uGpDnzN+Jz5gICRc/eqDpNdoUEDPVtZKhkV0TAUN9Fhkp2xQQM9b1Cv/c9od7ZJ1Dr7yPI/QOp1v+BWOtvJPV7Pwr4wI8EH9hP8oH95H6PgYdGAv0ewwcai/R7B4D9HtDWrjGp3zsg3u+VFCh6fgp70bOJlPCaCBw5/0QIdk1Fgt3PwGAHtLVrKpAkfyb4zUFSoXRQ/Mi5tECQPxT2IP8hKcg3EwjyhwhgbS4S5H8BBnmgrV1zgSD/C8FvfiUF+V/Fg/wZAkH+cDRnTnZlBQx1RGHOfIQQXX4TmDH+RpD7d1JU/Z04Y/yYVJH9IeADfxB84CjJB46S58wMPLQQqK4YPtBSpCpPOg2nS6CtXUvSnNmXt2TSX1/poT7lkpEPjE6Hs0+yaqGH1AGLx/SncfCOdk6HdM4MkXO6DALOmVHEOSsjnTNT5Jwuk4BzZhZxTmhaz4ITuoqqc2YRcM6saB4Z8xufSXT/kg0sOKNvy0aQOztQ7mDfkf00Xu++gzS/ySHgAzkIPnAKyQdOOY07v2HgoZXA/IbhA61F5jc5gfMboK1da9L8JqfY/CYXzj5VVQu9XAKFXu6wF3qfkZJ8G4HbZnITAnxbkQCfBxjggbZ2bQUKgzwEvzmVVByeGuA19grz7DdvlNhcXoHEli/sie1zUmJrL5DY8hECVAeRxJYfmNiAtnYdBBJbfoLfnEZKbKfxE1t1ZGIrEJ0buQICia2gyLkR9PvDC0XnRq6QgHMWVjg3KkzIIkUEzgyKEOQuSsqeRYlnBl+SKu9iAj5QjOADp5N84HTyuREDD50FqmiGD3QR6b6KA7svoK1dF9K5UXH+uVFNZKFXIupCXAmBQq+kSBdSC+mcpSLndKUEnLO0iHO2Qzpnmcg5XRkB5zxDxDmhaf3MaH7jzhRwzrIK85uyhP6lnEDvXo4g91mk3v0sYu++lzS/OVvAB84m+EB5kg+UJ89vGHjoKjC/YfhAN5H5TQXg/AZoa9eNNL+pIDa/OSe6PcqdI1DonRv2Qu9bUpLvIXB71LmEAN9TJMBXBAZ4oK1dT4HCoCLBbyqRisNK/NujoLPf5CixuWSBxObCnti+IyW23gKJzRECVB+RxFYZmNiAtnZ9BBJbZYLfVCEltir8xNYJmdiqRudGrqpAYqsmcm7UAemc1aNzI1ddwDlrKJwb1SBkkZoCZwY1CXLXImXPWsQzgx9JlXdtAR+oTfCBOiQfqEM+N2Lgob9AFc3wgQEi3dd5wO4LaGs3gHRudB793Kgy9Hkx50ddiDtfoNCrq9GFVIY+86Fe5JyunoBzXiDinNDn/V4YOae7UMA5LxJxTmharx/Nb1x9Aee8WGF+czGhf7lEoHe/hCB3A1Lv3oDYux8izW8aCvhAQ4IPXErygUvJ8xsGHgYKzG8YPjBIZH5zGXB+A7S1G0Sa31wmNr9pFN0e5RoJFHqNw17o/UJK8ncJ3B7VmBDgB4sE+MuBAR5oazdYoDC4nOA3V5CKwyvot0dhZ79NosTmmggktqZhT2y/khLbPQKJrSkhQA0VSWxXAhMb0NZuqEBiu5LgN1eREttV/MQGfd5vs+jcyDUTSGzNRc6NoM/7vTo6N3JXCzjnNQrnRtcQskgLgTODFgS5W5KyZ0vimcHvpMr7WgEfuJbgA9eRfOA68rkRAw/DBapohg+MEOm+WgG7L6Ct3QjSuVEr/rkR9HkxraMuxLUWKPSuF+lCoM98uCFyTneDgHO2EXFO6PN+20bO6doKOOeNIs4JTevtovmNayfgnO0V5jftCf1LB4HevQNB7o6k3r0jsXfPkI8zv+kk4AOdCD7QmeQDncnzGwYeRgrMbxg+MEpkftMFOL8B2tqNIs1vuojNb26Kbo9yNwkUejeHvdDLSEryowVuj7qZEODHiAT4rsAAD7S1GyNQGHQl+E03UnHYjX97FHT22z1KbK67QGK7JeyJLRMpsY0VSGy3EALUOJHE1gOY2IC2duMEElsPgt/0JCW2nvzEBn3eb6/o3Mj1Ekhst4qcG0Gf99s7OjdyvQWcs4/CuVEfQhbpK3Bm0Jcgdz9S9uxHPDPIRqq8+wv4QH+CDwwg+cAA8rkRAw/jBapohg9MEOm+bgN2X0Bbuwmkc6Pb6OdGVaDPi7k96kLc7QKF3kCNLqQK9JkPgyLndIMEnPMOEeeEPu/3zsg53Z0CznmXiHNC0/rgaH7jBgs45xCF+c0QQv9yt0DvfjdB7ntIvfs9xN49N2l+M1TAB4YSfOBekg/cS57fMPAwUWB+w/CBSSLzm2HA+Q3Q1m4SaX4zTGx+Mzy6PcoNFyj0RoS90MtDSvJTBG6PGkEI8FNFAvx9wAAPtLWbKlAY3Efwm/tJxeH99NujsLPfkVFicyMFEtuosCe2U0mJ7WmBxDaKEKCmiSS2B4CJDWhrN00gsT1A8JsHSYntQX5igz7vd3R0buRGCyS2MSLnRtDn/T4UnRu5hwSc82GFc6OHCVlkrMCZwVjGp61I2XMc8czgNFLl/YiADzxC8IFHST7wKPnciIGH6QJVNMMHZoh0X+OB3RfQ1m4G6dxoPP/cCPq8mAlRF+ImCBR6j4l0IdBnPjweOad7XMA5J4o4J/R5v5Mi53STBJzzCRHnhKb1ydH8xk0WcM4pCvObKYzbIgR696kEuZ8k9e5PEnv3oqT5zVMCPvAUwQeeJvnA0+T5DQMPMwXmNwwfmCUyv5kGnN8Abe1mkeY308TmN89Et0e5ZwQKvWfDXugVIyX52QK3Rz1LCPBzRAL8dGCAB9razREoDKYzDnZIxeEM/u1R0Nnvc1Fic88JJLbnw57YTicltrkCie15QoCaJ5LYZgITG9DWbp5AYpvJ6HhJiW0WP7FBn/f7QnRu5F4QSGwvipwbQZ/3Ozs6N3KzBZxzjsK50RxCFnlJ4MzgJYLcL5Oy58vEM4NSrMpbwAfmMipvkg/MI58bMfCwQKCKZvjAQpHuaz6w+wLa2i0knRvNp58bVYU+L+aVqAtxrwgUegs0upCq0Gc+LIyc0y0UcM5XRZwT+rzf1yLndK8JOOciEeeEpvXF0fzGLRZwztcV5jevE/qXJQK9+xKC3EtJvftSYu9ejjS/WSbgA8sIPvAGyQfeIM9vGHhYJDC/YfjAYpH5zXLg/AZoa7eYNL9ZLja/WRHdHuVWCBR6K8Ne6J1FSvJLBW6PWkkI8MtEAvybwAAPtLVbJlAYvEnwm7dIxeFb9NujsLPfVVFic6sEEtvqsCe2s0mJbYVAYltNCFArRRLb28DEBrS1WymQ2N4m+M07pMT2Dj+xQZ/3uyY6N3JrBBLbWpFzI+jzft+Nzo3cuwLO+Z7CudF7hCyyTuDMYB1B7vWk7LmeeGZwLqnyfl/AB94n+MAHJB/4gHxuxMDDKoEqmuEDq0W6rw3A7gtoa7eadG60gX9uBH1ezMaoC3EbBQq9TSJdCPSZDx9Gzuk+FHDOzSLOCX3e75bIOd0WAef8SMQ5oWn942h+4z4WcM6tCvObrYT+ZZtA776NIPcnpN79E2LvXoU0v/lUwAc+JfjAdpIPbCfPbxh4WCMwv2H4wFqR+c0O4PwGaGu3ljS/2SE2v/ksuj3KfSZQ6H0e9kKvKinJrxO4PepzxkGdSIDfCQzwQFu79QKFwU6C3+wiFYe7+LdHQWe/X0SJzX0hkNi+DHtiq0ZKbBsEEtuXhAC1USSx7QYmNqCt3UaBxLab4Dd7SIltDz+xQZ/3+1V0buS+EkhsX4ucG0Gf9/tNdG7kvhFwzr0K50Z7CVnkW4Ezg28Jcn9Hyp7fEc8MapEq7+8FfOB7gg/sI/nAPvK5EQMPmwWqaIYPbBHpvn4Adl9AW7stpHOjH+jnRtWgz4v5MepC3I8Chd5+jS6kGvSZDwci53QHBJzzJxHnhD7v9+fIOd3PAs55UMQ5oWn9UDS/cYcEnPMXhfnNL4T+5VeB3v1XgtyHSb37YWLvXo80vzki4ANHCD7wG8kHfiPPbxh42Cowv2H4wDaR+c3vwPkN0NZuG2l+87vY/OaP6PYo94dAoXc07IXeBaQkv13g9qijhAC/QyTAJxXA6RJoa7dDoDDwdYf2m3QFOIktXQH27VHY2W/6AlFiA+qAxmOGAiFPbBeSEttOgcSWgRCgdokktozAxAa0tdslkNgyEvwmEymxZeInNujzfjMD9aCa2DILJLYsBThxDu2c0Of9ZsUJLXtulFXAObOFveryq49shCySvUD4s2d2gtw5SNnTf9+SJCe9hFR5nyLgA6cQfCAnyQdyEn2AhYfdAlU0wwf2iHRfuYDdF9DWbg/p3ChXAfq5EfR5MbmjLsTlFij08oh0IdBnPpwaOac7VcA584o4J/R5v/ki53T5BJwzv4hzQtP6adH8xp0m4JwFFOY3BQj9S0GB3r0gQe5CpN69ELF3b0ya3xQW8IHCBB8oQvKBIuT5DQMP3wjMbxg+sFdkflMUOL8B2trtJc1viorNb4pFt0e5YgKF3ulhL/QuZz2cpVz4b486nRDg94kE+OLAAA+0tdsnUBgUJ/hNCVJxWIJ/exR09lsySmyupEBiKxX2xHYFKbHtF0hspQgB6oBIYisNTGxAW7sDAomtNMFvypASWxl+YoM+7/eM6NzInSGQ2M4UOTeCPu+3bHRu5MoKOGc5hXOjcoQscpbAmcFZBLnPJmXPs4lnBleRKu/yAj5QnuADFUg+UIF8bsTAw0GBKprhA4dEuq9zgN0X0NbuEOnc6Bz6uVF16PNizo26EHeuQKFXUaMLqQ595kOlyDldJQHnTBZxTujzfl3knM4JOGdlEeeEpvUq0fzGVRFwzqoK85uqhP6lmkDvXo0gd3VS716d2Lu3JM1vagj4QA2CD9Qk+UBN8vyGgYfDAvMbhg8cEZnf1ALOb4C2dkdI85taYvOb2tHtUa62QKFXJ+yF3rWkJP+HwO1RdQgB/qhIgD8PGOCBtnZHBQqD8wh+cz6pODyffnsUdvZbN0psrq5AYqsX9sR2HSmxpT8r/ImtHiFAZTgL75T+C53YLgAmNqCtXYaQ+81/gjjBby4kJbYL+YkN+rzfi6JzI3eRQGKrL3JuBH3e78XRuZG7WMA5L1E4N7qEkEUaCJwZNCDI3ZCUPRsSzwxuIFXelwr4wKUEH7iM5AOXkc+NGHjILFBFM3wgi0j31QjYfQFt7ZD6C2KoEf/cCPq8mMZRF+IaCxR6l4t0IdBnPlwROae7QsA5m4g4J/R5v00j53RNBZzzShHnhKb1q6L5jbtKwDmbKcxvmhH6l+YCvXtzgtxXk3r3q4m9ewfS/OYaAR+4huADLUg+0II8v2HgIbvA/IbhAzlE5jctgfMboK1dDtL8pqXY/Oba6PYod61AoXdd2Au9jqQkn0vg9qjrCAE+t0iAbwUM8EBbu9wChUErgt+0JhWHrfm3R0Fnv9dHic1dL5DYbgh7YutESmx5BRLbDYQAlU8ksbUBJjagrV0+gcTWhuA3bUmJrS0/sUGf93tjdG7kbhRIbO1Ezo2gz/ttH50bufYCztlB4dyoAyGLdBQ4M+hIkLsTKXt2Ip4Z3EyqvDsL+EBngg90IflAF/K5EQMPBQSqaIYPFBTpvm4Cdl9AW7uCpHOjm+jnRjWgz4u5OepC3M0ChV5XjS6kBvSZD90i53TdBJyzu4hzQp/3e0vknO4WAefsIeKc0LTeM5rfuJ4CztlLYX7Ti9C/3CrQu99KkLs3qXfvTezde5LmN30EfKAPwQf6knygL3l+w8BDEYH5DcMHiorMb/oB5zdAW7uipPlNP7H5Tf/o9ijXX6DQGxD2Qq8XKckXF7g9agAhwJcQCfC3AQM80NauhEBhcBvBb24nFYe302+Pws5+B0aJzQ0USGyDwp7YbiUlttICiW0QIUCVEUlsdwATG9DWroxAYruD4Dd3khLbnfzEBn3e713RuZG7SyCxDRY5N4I+73dIdG7khgg4590K50Z3E7LIPQJnBvcQ5B5Kyp5DiWcG/UiV970CPnAvwQeGkXxgGPnciIGHsgJVNMMHyol0X8OB3RfQ1q4c6dxoOP/cCPq8mBFRF+JGCBR694l0IdBnPtwfOae7X8A5R4o4J/R5v6Mi53SjBJzzARHnhKb1B6P5jXtQwDlHK8xvRhP6lzECvfsYgtwPkXr3h4i9+yDS/OZhAR94mOADY0k+MJY8v2HgobzA/IbhAxVE5jfjgPMboK1dBdL8ZpzY/OaR6PYo94hAofdo2Au9O0hJvqLA7VGPEgJ8JZEAPx4Y4IG2dpUECoPxBL+ZQCoOJ/Bvj4LOfh+LEpt7TCCxPR72xHYnKbFVFkhsjxMCVBWRxDYRmNiAtnZVBBLbRILfTCIltkn8xAZ93u8T0bmRe0IgsU0WOTeCPu93SnRu5KYIOOdUhXOjqYQs8qTAmcGTBLmfImXPp4hnBneTKu+nBXzgaYIPTCP5wDTyuREDD9UFqmiGD9QQ6b6eAXZfQFu7GqRzo2eIGLrXi6F+Pk0Pfl//PVH2flYgJj9LwON0UkyeTvYnRl6eIeADMwg+8BzJB54j52UGHmoL5GWGD9QRycvPA/My0NauDikvP5/gfg60TmcCdbqzLO69dpXl6HQmMS7dlTcpaTghN80ixehZJ+BfySf3ckj/CurhZHX6AkmnLxD9y695DxH8q27I855f79XKj5e7nkjeexGIIaCtXT2BU+RfCHi5SAAvtQl4qS+Cl9lAvABt7eoL4OVXAl4aCOClDgEvDUXwMgeIF6CtnYr+XgLqbzewh9pD6qFeYs73SD3Uy6R6/+U06KGQ/vUysIeaS9LpXKJ/DSP5VyOB2WF9Qo5rLBKj5wExBLS1a0yaHc4LzInRvjSchKEmAhhqSMBQUxEMzQdiCGhr15SEoflEDPm91mEChpoJ9FqNCBhqLoKhV4AYAtraNReYTRwh4KWFAF4uJ+ClpQheFgDxArS1U9HfQqD+9gNnEwdIs4mFxN5xFKnufZXUR7+aBrMJpH+9CpxNvEbS6WtpcE/GIqBODwIxe4iE2UVEzI4mYXYxyb8WpwFmkf61GIjZ10k6fZ18T8ZvBP9qJVCXXk+oS1uL1FVLgBgC2tq1FujjfifgpY0AXtoQ8NJWBC9LgXgB2tq1FcDLHwS8tBfAy40EvHQQwcsyIF6AtnYq+nsDqL/DwB7qCKmHeoNY4z5C6qGWk+r95WnQQyH9azmwh1pB0ukKon89SvKvzgLnyV0JOa6LSIxeCcQQ0NauC+k8eSXxPHk8CUNdBTDUg4ChbiIYehOIIaCtXTcSht4k35NxlIChHgK91q0EDPUUwdBbQAwBbe16Cswmkgh+01sAL30IcvcRwcsqIF6AtnYq+lsN1F/mcrj3ylKOk7NXE3vHSaS6921SH/12GswmkP71NnA28Q5Jp++kwT0Za4A6zQ7EbA4SZtcQMTuFhNm1JP9amwaYRfrXWiBm3yXp9F3yPRnpCPVZf4G6dChB7gEiddV7QAwBbe0GCPRx6Ql+M1AAL8MIcg8Swcs6IF6AtnaDBPCSgeA3dwngZQRB7sEieFkPxAvQ1k5Ff+8D9ZcL2EPlJvVQ7xNr3GdIPdQHpHr/gzTooZD+9QGwh9pA0ukGon89S/KvexS+M5mQ44aKxOiNQAwBbe2Gks6TNxLPk6eTMDRcAEOPEjA0QgRDm4AYAtrajSBhaBP5noyMBF8aKdBrPUaQe5QIhj4EYghoazdKYDaRieA3owXwMpEg9xgRvGwG4gVoa6eivy1A/RUBziaKkmYTW4i94yxS3fsRqY/+KA1mE0j/+gg4m/iYpNOP0+CejK1AnRYHYrYECbNbiZidTcLsNpJ/bUsDzCL9axsQs5+QdPoJ+Z6MzIT6bKxAXTqTIPc4kbrqUyCGgLZ24wT6uCwEvxkvgJcXCHJPEMHLdiBegLZ2EwTwkpXgNxMF8DKbIPckEbzsAOIFaGunor/PgPorDeyhypB6qM+INe58Ug/1Oane/zwNeiikf30O7KF2knS6k+hfr5D8a4rAefKrhBw3VSRG7wJiCGhrN5V0nryLeJ68gIShpwUw9DoBQ9NEMPQFEENAW7tpJAx9Qb4nIxvBl6YL9FrLCHLPEMHQl0AMAW3tZgjMJrIT/GamAF6WE+SeJYKX3UC8AG3tVPS3B6i/isDZRCXSbGIPsXdcTKp7vyL10V+lwWwC6V9fAWcTX5N0+nUa3JPxDVCnlYGYrULC7DdEzC4lYXYvyb/2pgFmkf61F4jZb0k6/TYNMPsdUKfVgZitQcLsd0TMLidh9nuSf32fBphF+tf3QMzuI+l0H/k+qg8JPdXskPeSoz259xNwNUekF/oBiCGgrd0cgdnLZgJe5oZc7jEkvMwTwcuPQLwAbe3mCeBlCwEvC0Iu90MkvCwUwct+IF6AtnYq+jsA1F9tYA9Vh9RDHSDWuKtJPdRPpHr/pzTooZD+9ROwh/qZpNOfif71Nsm/FgncA7KDkNsXi8Tog0AMAW3tFpPuATlIvAfkHRKGlgpgaCcBQ8tEMHQIiCGgrd0yEoYOke+j+oLgSytCjqGHSb3WShEM/QLEENDWTkV/vwL11wDYazUk9Vq/Emvh90h5/DCpLzicBr0W0r8OA3utIySdHiGfV+0l5LhVIc9xY0k5brVIjP4NiCGgrd1qgfn7twS8rAm53ONIeFkrgpffgXgB2tqtFcDLdwS8rAu53I+Q8LJeBC9/APECtLVT0d9RoP4aAXuoxqQe6iixxt1I6qGSCnJ04b9vyaS/vtA9FNK/gno4WZ2mI+k0XUGef20i+dcGgVn7z4TcvlEkRqfH+aoD2tptJM3afXlZs/YPSRjaLIChXwgY2iKCoQxADAFt7baQMJSBiCG/1zpM8KWtIcfQo6Rea5sIhjICMQS0tVPRXyag/loAe62WpF4rE7EW/piUxzOT+oLMadBrIf0rM7DXykLSaRaif/3nu5BPw/vX9pDnuPGkHLdDJEZnBWIIaGu3Q2D+npGAl50hl3sCCS+7RPCSDYgXoK3dLgG8ZCbgZXfI5X6MhJc9InjJDsQL0NZORX85gPprBeyhWpN6qBzEGncHqYc6hVTvn5IGPRTSv04B9lA5STrNSfSvz0j+9Y3ArD0PIbfvFYnRuYAYAtra7SXN2nMRZ+2fs54jJICh/AQM7RPBUG4ghoC2dvtIGMpNPq8qSPCl/SHH0OOkXuuACIbyADEEtLVT0d+pQP11BvZaXUi91qnEWvhLUh7PS+oL8qZBr4X0r7zAXisfSaf5yOdVJQk57mDIc9xEUo47JBKj8wMxBLS1OyQwfy9NwMvhkMs9iYSXIyJ4OQ2IF6Ct3REBvJxBwMsfIZf7CRJejorgpQAQL0BbOxX9FQTqryuwh+pG6qEKEmvcvaQeqhCp3i+UBj0U0r8KAXuowiSdFib617ck/0p/dvhn7RUJuT3D2RoxuggQQ0BbO6T+ghgqQpy1f8e6L1sAQ5UJGMoigqGiyHvPgRjKQsJQUfJ5VTWCL2UPOYYmk3qtHCIYKgbEENDWTkV/pwP11x/Yaw0g9VqnE2vhH0l5vDipLyieBr0W0r+KA3utEiSdliCfV9Ul5LhcIc9xU0g5LrdIjC4JxBDQ1i53yP3Gx8sFBLzkDbncU0l4ySeCl1LIeySAeMkngJeLCHgpEHK5nyThpaAIXkoD8QK0tVPRXxmg/gYCe6hBpB6qDLHGPUTqoc4g1ftnpEEPhfSvM4A91JkknZ5J9K9fSP5VRGDWfjkhtxcVidFlgRgC2toVJc3ayxJn7b+y5lwCGLqSgKESIhgqh5zlATFUgoShcuTzquYEXyodcgw9Req1yohg6CwghoC2dir6Oxuov+HAXmsEqdc6m1gL/07K4+VJfUH5NOi1kP5VHthrVSDptAL5vOp6Qo4rG/Ic9zQpx5UTidHnADEEtLUrJzB/b0PAS/mQyz2NhJcKIng5F5lzgHipIICXGwl4qRhyuZ8h4aWSCF4qAvECtLVT0V8loP5GAnuoUaQeqhKxxs2Qj9NDJZPq/eQ06KGQ/pUM7KEcSaeO6F8ZSf5VWWDW3pWQ26uIxOjKQAwBbe2qkGbtlYmz9kwkDFUXwFAPAoZqiGCoChBDQFu7GiQMVSGfV91K8KXaIcfQs6Req44IhqoCMQS0tVPRXzWg/sYDe60JpF6rGrEWzsbK46S+oHoa9FpI/6oO7LVqkHRag3xeNZCQ4+qGPMdNJ+W4eiIxuiYQQ0Bbu3oC8/c7CHi5KORyzyDhpb4IXmoB8QK0tasvgJe7CHhpEHK5nyPhpaEIXmoD8QK0tVPRXx2g/iYCe6hJpB6qDrHGzU3qoc4j1fvnpUEPhfSv84A91PkknZ5P9K88JP9qJDBrv4+Q2xuLxOi6QAwBbe0ak2btdYmz9lNJGGoigKEHCBhqKoKhekAMAW3tmpIwVI98XjWG4EvNQo6h50m9VnMRDF0AxBDQ1k5FfxcC9Tcd2GvNIPVaFxJr4dNIefwiUl9wURr0Wkj/ugjYa9Un6bQ++bzqMUKOaxHyHDeTlONaisToi4EYAtratRSYv08k4KVVyOWeRcJLaxG8XALEC9DWrrUAXp4g4KVNyOV+gYSXtiJ4aQDEC9DWTkV/DYH6mwnsoWaReqiGxBq3KKmHupRU71+aBj0U0r8uBfZQl5F0ehnRv4qR/Ku9wKx9OiG3dxCJ0Y2AGALa2nUgzdobEWftp5Mw1FkAQzMJGOoigqHGQAwBbe26kDDUmHxe9SLBl7qGHEMvknqtbiIYuhz5XbdADKno7wqg/hYAe62FpF7rCmItXIp13wmpL2iSBr0W0r+aAHutpiSdNiWfVy0g5LgeIc9xs0k5rqdIjL4SiCGgrV1Pgfn7qwS89A653HNIeOkjgpergHgB2tr1EcDLIgJe+odc7pdIeBkggpdmyO+wBeJFRX/NgfpbBOyhFpN6qObEGrccqYe6mlTvX50GPRTSv64G9lDXkHR6DdG/ziL510CBWfubhNw+SCRGt0B+xyAwxw0izdpbEGftZ5MwdJcAht4mYGiwCIZaAjEEtLUbTMJQS/J51VqCL90Tcgy9TOq1hopg6FoghoC2dir6uw6ov1XAXms1qde6jlgLn0vK461IfUGrNOi1kP7VCthrtSbptDX5vGoTIccND3mOm0vKcSNEYvT1yO8YBOa4EQLz980EvIwMudzzSHgZJYKXG5DfJwPEyygBvHxEwMvokMs9n4SXMSJ4aQPEC9DWTkV/bYH6WwPsodaSeqi2xBq3CqmHupFU79+YBj0U0r9uBPZQ7Ug6bUf0r6ok/xorMGvfScjt40RidHsghoC2duNIs/b2xFl7NRKGxgtgaDcBQxNEMNQB+d0xQAxNIGGoA/m86muCL00MOYZeIfVak0Qw1BH57HAghlT01wmov83AXmsLqdfqRKyFa7E+J03qCzqnQa+F9K/OwF6rC0mnXcjnVfsJOW5KyHPcAlKOmyoSo28CYghoazdVYP7+EwEvT4dc7oUkvEwTwcvNQLwAbe2mCeDlIAEv00Mu96skvMwQwUtX5DPBgXhR0V83oP62AnuobaQeqhuxxq1H6qG6k+r97mnQQyH9qzuwh7qFpNNbiP51Acm/ZgrM2pMK4OWeJRKjeyCf2QrMcbNIs/YexFn7hSQMzRbAUEYChuaIYKgnEENAW7s5JAz1JJ9XZSH40tyQY+g1Uq81TwRDvYAYAtraqejvVqD+dgN7rT2kXutWYi18CSmP9yb1Bb3ToNdC+ldvYK/Vh6TTPuTzqjyEHLcg5DluESnHLRSJ0X2Rz2wF5riFAvP3vAS8LAq53ItJeFksgpd+yOdzAfGyWAAv+Ql4WRpyuV8n4WWZCF76A/ECtLVT0d8AoP6+AfZQe0k91ABijduY1EPdRqr3b0uDHgrpX7cBe6jbSTq9nehfl5P8a4XArL04IbevFInRA4EYAtrarSTN2gcSZ+1XkDC0SgBDpQkYWi2CoUHIZ3EBMbSahKFB5POqMwm+tCbkGFpC6rXWimDoDuSzGIAYUtHfnUD9HQT2WodIvdadxFr4KtZzfUl9wV1p0Gsh/esuYK81mKTTweTzqoqEHLcu5DluKSnHrReJ0UOAGALa2q0XmL8nE/CyIeRyLyPhZaMIXu4G4gVoa7dRAC+VCXjZHHK53yDhZYsIXu5BPmMBiBcV/Q0F6u8wsIc6QuqhhhJr3JakHupeUr1/bxr0UEj/uhfYQw0j6XQY0b+uJfnXVoFZ+3mE3L5NJEYPR34GFpjjtpFm7cOJs/brSBjaLoChCwgY2iGCoRFADAFt7XaQMDSCfF5Vn+BLO0OOoeWkXmuXCIbuA2IIaGunor/7gfrLfBbuvbKcxYlB9xNr4RtIeXwkqS8YmQa9FtK/RgJ7rVEknY4in1ddTshxu0Oe41aQctwekRj9APIzsMAct0dg/t6EgJdvQi73ShJe9org5UHk5x2AeNkrgJcrCXj5PuRyv0nCyz4RvIwG4gVoa6eivzFA/WUH9lA5SD3UGGKN24HUQz1EqvcfSoMeCulfDwF7qIdJOn2Y6F8dSf61X2DW3oqQ2w+IxOixQAwBbe0OkGbtY4mz9k4kDB0UwFAbAoYOiWBoHPKzDUAMHSJhaBz5vKodwZcOhxxDb5F6rSMiGHoEeW8bEEMq+nsUqL8CwF6rIKnXepRYC9/M+h5KUl8wPg16LaR/jQf2WhNIOp1APq/qSshxf4Q8x60i5bijIjH6MSCGgLZ2RwXm790JeElfPtxyrybhJUN5Dbw8DsQL0NYuQ8j9xsdLDwJeModc7rdJeMkigpeJyHvWgHhR0d8koP6KAHuooqQeahKxxu1J6qGeINX7T6RBD4X0ryeAPdRkkk4nE/2rF8m/soc8x/mz9tsIuT2HSIyegrynAJjjkPoLYmgKcdZ+KwlDuQQwdAcBQ7lFMDQViCGgrV1uEoamks+rBhN8KW/IMfQOqdfKJ4KhJ4EYAtraqejvKaD+ygJ7rXKkXuspYi3cj5THnyb1BU+nQa+F9K+ngb3WNJJOp5HPq+4j5LgCIc9xa0g5rqBIjH4GeU8BMMcVFJi/jyTgpUjI5V5LwktREbw8i5wfA/FSVAAvDxDwUjzkcr9LwksJEbxMB+IFaGunor8ZQP2VB/ZQFUg91AxijTuI1EM9R6r3n0uDHgrpX88Be6jnSTp9nuhfd5D8q7TArH08IbeXEYnRM4EYAtralSHN2mcSZ+13kjBUVgBDEwkYKieCoVnIWTEQQ+VIGJpFPq+aTPCl8iHH0HukXquCCIZeQPYKQAyp6O9FoP6qA3utGqRe60ViLXw3KY/PJvUFs9Og10L612xgrzWHpNM5J6DTk+X9JaBOawMxW4eE2ZeImL2XhNmXSf71chpgFulfLwMxO5ek07kpOs3krewBHwu+0H5XMwkrS+w1ryCR4XkF8e87H+ggLLnnF/xTwaD3/UtRlx7M8wsFcDp9BRgMEtnnZPmrlWIftA5rAXlcUBDrN2gf9228oCDeNgtJAXthIGBnTlnxrzAHbCafNUT4rC7CZzCWJp/kKxF/J4ux2t57ZEzCx7+MwPeqTbJ1ElbmvxRSrwbiIdypkAnBD4I5Ag4QfKH5RlTgnf/7YhjSxf4R1MVrKcXbooIpCollkddSLBz83aI0aK/mnnzFWzkF/e41YPW8CGxcdKTzQfMaqRIHA6XmXFJFtZhUUS0mjlj88cpowoilosDx5g+EI6lKIkcLrwM7R6CtXaWQ+42PlzEEvFQWwMuPBLxUEcHLEiBegLZ2VQTw8hABL9UF8LKfgJcaInhZijy6BuKlhgBeHibgpbYAXn4h4KWOCF6WIY+NgXipI4CXsQS81BXAy28EvNQTwcsbQLwAbe3qCeBlHAEvFwng5XcCXuqL4GU5EC9AW7v6Anh5hICXBgJ4+YOAl4YieFkBxAvQ1q6hAF4eJeClkQBeMhLOFBqL4GUlEC9AW7vGAngZT8BLEwG8ZCXgpakIXt4E4gVoa9dUAC8TCHhpJoCXbAS8NBfBy1tAvABt7ZoL4OUxAl5aCOAlOwEvLUXwsgqIF6CtXUsBvDxOwEsrAbzkIeCltQheVgPxArS1ay2Al4kEvLQRwEt+Al7aiuDlbSBegLZ2bQXwMomAl/YCeDmNgJcOInh5B4gXoK1dBwG8PEHAS2cBvBQg4KWLCF7WAPECtLXrIoCXyQS8dBXASzECXrqJ4GUtEC9AW7tuAniZQsBLDwG8lCTgpacIXt4F4gVoa9dTAC9TCXjpLYCXUgS89BHBy3tAvABt7foI4OVJAl76C+ClNAEvA0Twsg6IF6Ct3QABvDxFwMtAAbycRcDLIBG8rAfiBWhrN0gAL08T8HKXAF7OIeBlsAhe3gfiBWhrN1gAL9MIeLlHAC/nEvAyVAQvHwDxArS1GyqAl2cIeBkugJeKBLyMEMHLBiBegLZ2IwTw8iwBLyMF8FKVgJdRInjZCMQL0NZulABephPwMloALzUJeBkjgpdNQLwAbe3GCOBlBgEvYwXwUouAl3EiePkQiBegrd04Abw8R8DLeAG81CbgZYIIXjYD8QK0tZsggJfnCXiZKICXCwh4mSSCly1AvABt7SYJ4GUmAS9TBPByMQEvU0Xw8hEQL0Bbu6kCeJlFwMvTAni5hICXaSJ4+RiIF6Ct3TQBvLxAwMt0Abw0IOBlhghetgLxArS1myGAlxcJeJkpgJfLCXiZJYKXbUC8AG3tZgngZTbja7EF8HIlAS9zRPDyCfKrv4F4mSOAlzkEvMwVwMtVBLzME8HLp0C8AG3t5gng5SUCXhYI4KUZ41t7RfCyHYgXoK3dQgG8vEzAyyIBvFzL+E5GEbzsAOIFaGu3WAAvcwl4WSqAl+sJeFkmgpfPgHgB2totE8DLPAJeVgjg5QYCXlaK4OVzIF6AtnYrBfAyn4CXVQJ4aUPAy2oRvOwE4gVoa7daAC+vEPCyRgAvHQl4WSuCl11AvABt7dYK4GUBAS/rBPByEwEv60Xw8gUQL0Bbu/UCeFlIwMsGAbzcTMDLRhG8fAnEC9DWbqMAXl4l4GWzAF66EvCyRQQvu4F4AdrabRHAy2sEvGwVwEsvAl62ieBlDxAvQFu7bQJ4WUTAy3YBvPQl4GWHCF6+AuIFaGu3QwAviwl42SmAl34EvOwSwcvXQLwAbe12CeDldQJedgvgpT8BL3tE8PINEC9AW7s9AnhZQsDLNwJ4uYOAl70ieNkLxAvQ1m6vAF6WEvDyvQBehhDwsk8EL98C8QK0tdsngJdlBLzsF8DL3QS8HBDBy3dAvABt7Q4I4OUNAl4OCuDlHgJeDong5XsgXoC2docE8LKcgJfDAni5j4CXIyJ42QfEC9DW7ogAXlYQ8PKHAF4eIODlqAhefgDiBWhrd1QALysJeElfIfx4eZCAlwwVNPDyIxAvQFu7DCH3Gx8vbxLwklkAL6MJeMkigpf9QLwAbe2yCODlLQJesgvg5RECXnKI4OUAEC9AW7scAnhZRcBLLgG8PEbAS24RvPwExAvQ1i63AF5WE/CSVwAvjxPwkk8ELz8D8QK0tcsngJe3CXgpIICXiQS8FBTBy0EgXoC2dgUF8PIOAS9FBPDyJAEvRUXwcgiIF6CtXVEBvKwh4KW4AF6eIeClhAhefgHiBWhrV0IAL2sJeCktgJdnCXgpI4KXX4F4AdralRHAy7sEvJQVwMt0Al7KieDlMBAvQFu7cgJ4eY+Al/ICeHmBgJcKIng5AsQL0NYOqb+M3nvU8NaQlPd73ZN5ibeWeuvnAklJB711yFvLvP8f8X6+4f1c7q0Vvl94K723MnhrpbeyeOtNb73lrVXeyumtXN7K7a3V3srnrbe99Y631nirsLeKeKuot9Z6q4S33vXWe95a560zvVXWW+W8td5bFbz1vrc+8NYGbzlvVfZWFW9t9FYNb/nfAe9/r7X/Xb3ne6uut+p5y/8u0vre8r9j0f/eOP+7sC7zViNvNfaW/10/Tb3lf4eJ/70M/rPmr/FWC2+19Jb/LO3W3vKfEew/99R/lmM7b7X3Vgdv+c+q6+It/xlc/nOF/Gel3OKtHt7q6S3/WRB9vOV/xt3/3K7/WcTbvTXQW4O85X/WarC3/M+Q+PfF+/f6DvPWcG+N8JZ/L+Mob/n3aPn3nfhn6Q97a6y3xnnLPyuc4C3/DMSf6/qzqsnemuKtqd7ye/Fp3vJ7DL9u8nPB896a6a1Zvm29Nafgn1gCx5Kac733XlAQH0t+K4jDQoYULMS/UO9P0q1D6oDF4+9oHtEM1kziOGhFcpI/6S898WT+nSB3JVKSz0h0zJO+wRnn5A7oNw5pC3KQdLH3+zcGyT9CHiT/l8XTgwVfAAThUaASff1lSNGj/74lOYaX0GtSoajSQuqAxWO6QiGvtPz3Y1RalQUqLd846PetIlJpBR3zpD8ag3NyB/QbVyWqtCSCZPqQB0lWRVAZWRFkKMSptPz3LckxvIReM0aVlssoEEQysYMIouLIRKg4qotUHJmAFUdmYMWBnO1UjyoOiWCR+V9acVRBZsYspIoji17FAdVr1qjicFkFgkg2hYrDZzIDSPCO1apWde2TOy4oyFHiSX+EWgc4tOyrAJzs/9LsWxWZJXKQsm8OvewL1espUfZ1pwgEkZwK2ddnMj1R8JN+iEKUMSWcPde/NGNWQ0b23KSMmVsvY0L1mifKmC6PQBA5NewZ0584107C9aspL5cR+F61gfLmBRuEUcGcSjixqBnyj9r4cuclyF1L5KTmVGCFmQ94UgP0G1crOqmRSFr5/qWVb3VkhZafVPnm16t8oXo9Lap83WkCQaRA2O/C9Z3yVcJduOcJ3IVbgFBpnS9SaRUAVloFgZUW0G/c+VGlJREkC/5LK60ayIqgEKnSKqRXaUH1WjiqtFxhgSBSJOyV1gsFOJ93ukCg0ipCqLQuFKm0igArraLASgvoN+7CqNKSCJJFkTxm8t4ki7cy/91WlMdywBgn8llDhM/qInz6SVOBz7yFOHwmYflMTh94z2KF/vvzdD85oxUy38v6tZL+Xtqf9EkW8L3mA+8mDrZMxQItU+yFvherGLCqKF4Im13RvuTb3LcV+sF+LF866QdVh9wevr+UIFT0JUkjjJIpePQLlhwBLAZfaB3tAySuzv99dUjA7sm+t4v9I6iLUikJoXShFIXEFFgqxdjB35VOEOTQt88ElWh0rsopzuVKAQNm6UJY46KB5IMzZkygPRi3vLTzbcwIJmVIwaQMbx76nycMHyI8YfhigScMv1gAL/clIk8YPgOY8IG2dpcIPJH7FwJeLhXAy2wCXi4TwcuZQLwAbe0uE8DLrwS8XC6AlzkEvFwhgpeyQLwAbe2uEMDLYQJerhTAyysEvFwlgpdyQLwAbe2uEsDLEQJerhbAywICXq4RwctZQLwAbe2uEcDLbwS8XCuAlyUEvFwngpezgXgB2tpdJ4CX3wl4uV4AL0sJeLlBBC/lgXgB2trdIICXPwh4uVEAL8sIeGkngpcKQLwAbe3aCeDlKAEvHQXw8hYBL51E8HIOEC9AW7tOAnhJyo/3m5sE8LKKgJebRfByLhAvQFu7mwXwko6Al+4CeHmPgJdbRPBSEYgXoK3dLQJ4SU/ASy8BvKwj4OVWEbxUAuIFaGt3qwBeMhDw0lcAL+sJeOkngpdkIF6Atnb9BPCSkYCX2wTw8iEBL7eL4MUB8QK0tbtdAC+ZCHi5QwAvmwl4uVMEL5WBeAHa2t0pgJfMBLwMEcDLpwS83C2ClypAvABt7e4WwEsWAl7uFcDLdgJehongpSoQL0Bbu2ECeMlKwMt9AnjZQcDL/SJ4qQbEC9DW7n4BvGQj4OUBAbx8ScDLgyJ4qQ7EC9DW7kEBvGQn4OUhAbzsJuDlYRG81ADiBWhrh9Sf/5g//6liZ6W8n/8ZbP9zpf5n5eZ6tp/nrfne8j8L5H++4TXv3697y793278f1b/HboX3/5XeetNb/j1E/n0R73j/ftdb/pmvf47lz+Y3eP/f6K1N3vJnj/485WPv3594y+8V/frXz+k7vf/v8tYX3vJjlm+Hr71/f1vgT1urPH+hJvi5qTWT/v5CvT9Jtw6pAxaPtcL+3FTf8AwHfSTkz031Za5FkPtRkeem1gI+sKc2MKEB/cYhbUEOkrTnpioEydohD5L/y+LpwYKXAIKwDumJTHV4T2SS0Ot5UaXlzhMIIueHvdLy349RaT0mUGmdT5D7cZFK63xgMKoLrLSAfuMejyotiSBZ919aaVVGVgT1SJVWPb1KC6rXC6JKy10gEEQuZAcRRMVxIaHieEKk4rgQCMqLQjrbeSKqOCSCxUX/0oqjCjIz1idVHPX1Kg6oXi+OKg53sUAQuSTssx3/i6kYs50pArOdSwhyTxWptC4BBqMGwEoL6DdualRpSQTJBv/SSqsqsiJoSKq0GupVWlC9XhpVWu5SgSBymcJs5zLCkfFlQGdvpOPstIyp4OyN/qUZsxoysjcmZczGehkTqtfLo4zpLhcIIleEfTbhf3kyYzbxtMBs4gqC3NNEZhNXAINRE+BsAug3blo0m5AIkk3+pZVWdWRF0JRUaTXVq7Sger0yqrTclQJB5KqwV1rVkziV1nSBSusqgtwzRCqtq4DBqBmw0gL6jZsRVVoSQbLZv7TSqoGsCJqTKq3mepUWVK9XR5WWu1ogiFwT9krrdNJMa6ZApXUNQe5ZIpXWNcBg1AJYaQH9xs2KKi2JINniX1pp1URWBC1JlVZLvUoLqtdro0rLXSsQRK4Le6X1AukBVrMFKq3rCHLPEam0rgMGo1bASgvoN25OVGlJBMlW/9JKqxayImhNqrRa61VaUL1eH1Va7nqBIHJD2CutYqSZ1lyBSusGgtzzRCqtG4DBqA2w0gL6jZsXVVoSQbJN2IPkKwWTkhYUxAeLtoU4wSI9mM/5BXHvdWMhLGjQtvZtciMhMbQjVcLteJWwK04qDtoX4hYHySf3cr792xPk7kDygQ5EH2DhYUHIvy+C5QMLRb4voiMwTgNt7ZD6C2KoYwqGVLvhJVnCz2MnZNxXNdT9WcPPY+fIUMlulIChukSGSnbdM4Sfx5vC3uP634/E6HFvFqj1bybUeV1JtX5XYq3v93o3EXTRTcAHuhHk7k7yge5EH2DhYZFAv8fwgcUi/d4twH4PaGu3mNTv3SLe740TqE57hL3omUcqepaGPNj5ib4HIdgtEwl2PYHBDmhrt0wgSfYk+E0vUqHUK8Br7AW+rcfdCDxJvxWnh6qqie3WQuHnsXfYE9t8UmJbIZDYehMC1EqRxNYHmNiAtnYrBRJbH4Lf9CUltr78xFYdmdj6Rferun4Cia0/6Y4ktHPWQDrngMg53QAB57xNxDmrIZ3zdpzQVVSd83YB5xwY9pbgNVJLMEjgcGcQobS7g1Ta3UE+4BtI0MWdAj5wJ0Huu0g+cBf5gI+Bh1UCLR7DB1aLjAYGA0cDQFu71aQDvsEBDMVeYW6Rh0SFnhsiUOjdHfZC73VSoXePQJK/hxDgh5KS/FByoXc3QRf3CvjAvQS5h5F8YBi50GPgYY1AocfwgbUihd5wYKEHtLVbSyr0hvMLvXbIQm9ENG52IwQKvftExs3tkc55f+Sc7n4B5xwp4pwdkM45KnJON0rAOR8QcU5oWn8wmt+4BwWcc3TY5zcrSPObMQK9+xhC3/YQqXd/iDy/GU3QxcMCPvAwQe6xJB8YS57fMPCwTmB+w/CB9SLzm3HA+Q3Q1m49aX4zTmx+80j0IQ33iECh92jYC72VpEJvg8CHNB4lBPiNIgF+PDDAA23tNgoUBuMJfjOBVBxOKET/kAZ09vtYlNjcYwKJ7fGwJ7Y3SYlts0Bie5wQoLaIJLaJwMQGtLXbIpDYJhL8ZhIpsU2iJzaXjExsT0TnRu4JgcQ2WePcyEGf+TAlck43RcA5p4ocanZGOueT0aGme1LAOZ8Ke0vwDqkleFrgQOtpQmk3jVTaTSMfaj5F0MUzAj7wDEHuZ0k+8Cz5UJOBh60CLR7DB7aJjAamA0cDQFu7baRDzen0Q01sizwjKvTcDIFC77mwF3rvkgq95wWS/POEAD+TlORnkgu95wi6mCXgA7MIcr9A8oEXyIUeAw/bBQo9hg/sECn0XgQWekBbux2kQu9FfqFXFVnozY7GzW62QKE3R+QsBPqwu5ci53QvCTjnyyLOCX1Az9zIOd1cAeecJ+Kc0LQ+P5rfuPkCzvlK2Oc3G0jzmwUCvfsCQt+2kNS7LyTPb14h6OJVAR94lSD3ayQfeI08v2HgYafA/IbhA7tE5jeLgPMboK3dLtL8ZpHY/GZx9CENt1ig0Hs97IXeRlKht1vgQxqvEwL8HpEAvwQY4IG2dnsECoMlBL9ZSioOlxaif0gDOvtdFiU2t0wgsb0R9sS2iZTYvhFIbG8QAtRekcS2HJjYgLZ2ewUS23KC36wgJbYV/MQGfV7MyujcyK0USGxvipwbQZ/58FbknO4tAedcJeKctZDOuTo61HSrBZzz7bC3BB+TWoJ3BA603iGUdmtIpd0a8qHm2wRdrBXwgbUEud8l+cC75ENNBh6+F2jxGD6wT2Q08B5wNAC0tdtHOtR8j3+oCW2R10WFnlsnUOitD3uh9wmp0HtfIMm/TwjwH5CS/AfkQm89QRcbBHxgA0HujSQf2Egu9Bh42C9Q6DF84IBIobcJWOgBbe0OkAq9TfxCrxOy0PswGje7DwUKvc0i42bow+62RM7ptgg450cazlkZ+oCejyPndB8LOOdWkcgJTevbovmN2ybgnJ+EfX6zkzS/+VSgd/+U0LdtJ/Xu28nzm08Iutgh4AM7CHJ/RvKBz8jzGwYeDgrMbxg+cEhkfvM5cH4DtLU7RJrffC42v9kZfUjD7RQo9HaFvdDbRSr0Dgt8SGMXIcAfEQnwXwADPNDW7ohAYfAFwW++JBWHXxaif0gDOvvdHSU2t1sgse0Je2L7gpTY/hBIbHsIAeqoSGL7CpjYgLZ2RwUS21cEv/malNi+pie2ytDnxXwTnRu5bwQS216RQ03oMx++jZzTfSvgnN+JOGcVpHN+Hx1quu8FnHNf2FuCr0ktwQ8CB1o/EEq7H0ml3Y/kQ819jBuSBXxgP+OGZJIPHCAfajLwkP6cf6cPZDgHn5ySkvCjgZ+AowGgrR1Sf0EM/UQ/1MS2yD9HhZ77WaDQOxj2Qu9bUqF3SCDJHyIE+F9ISf4XcqF3kKCLXwV84FeC3IdJPnCYXOgx8JBZoNBj+EAWkULvCLDQA9raZSEVekdSMOT/v0bS319om6H9dUmW8PP4GzLuqxrq/qzh5/H3yFDJbpSAof6IDJXsumcIP49Hw97v+b3eUUK9k1Q4/HWezyNa7nSFOXWK/74lSU76s9fzl2AMdQV8ID3BBzKQfCBDYW6/x8BDdoF+j+EDOUT6vYw4X3VAW7scpH4vY2Htfm+cQHWaqXDIi56DpISXK+TBzi/2MhGCXW6RYJcZGOyAtna5BZJkZoLfZCEVSllSeFUN8tmyhZ/HrGEP8odIQT6vQJDPSgBrPpEgnw0Y5IG2dvkEgnw2RgdICvLZxYN8ToEgnwMZ5FUNlVvAUKeEPRv7WekUQnTJKTBjzEmQOxcpquYizhiPkCqy3AI+kJvgA3lIPpCHPGdm4KGAQHXF8IGCIlX5qcCqHGhrV5A0Zz5VfM5cQKDoyRtVp8mukICh8kWGSnZFBAyVPzJUsismYKjTFPq90xh1nkCtX4BR55Fq/YLEWj9dQU6/V0jABwoRfKAwyQcKk/s9Bh6KCPR7DB8oKtLvFQH2e0Bbu6Kkfq+IeL9XUqDoKRr2oic9KeEVFzhyLkoIdiVEgl0xYLAD2tqVEEiSxQh+czqpUDpd/Mi5tECQLx72IJ+BFORLCwT54gSwlhEJ8iWAQR5oa1dGIMiXIPhNSVKQLyke5M8QCPKlojlzsisrYKjSCnPm0oysJDBjLEOQ+wxSVD2DOGPMQqrIzhTwgTMJPlCW5ANlyXNmBh7KClRXDB8oJ1KVlwNW5UBbu3KkOXO5AIZir/RQn3LQ7/w+CxhLVAu9swqHn8ezC3PwjnZOh3TO8pFzuvICzllBxDkrI53znMg53TkCznmuiHNC03pFnNBVVJ2zooBzVlKY31Qi9C/JAr17MkFuR+rdHbF3z0ma31QW8IHKBB+oQvKBKuT5DQMP5QXmNwwfqCAyv6kKnN8Abe0qkOY3VcXmN9Vw9qmqWuhVEyj0qoe90MtFSvIVBW6bqU4I8JVEAnwNYIAH2tpVEigMahD8piapOKwZ4DX2CvPst1aU2FwtgcRWO+yJLTerexVIbLUZ3atIYqsDTGxAW7sqAomtDsFvziMltvP4ia06MrGdH50bufMFEltdkXMj6PeU1ovOjVw9Aee8QOHc6AJCFrlQ4MzgQoLcF5Gy50XEM4N8pMq7voAP1Cf4wMUkH7iYfG7EwEN1gSqa4QM1RLqvS4DdF9DWrgbp3OgS/rlRTWSh1yDqQlwDgUKvoUgXUgvpnJdGzukuFXDOy0Scsx3SORtFzukaCThnYxHnhKb1y6P5jbtcwDmvUJjfXEHoX5oI9O5NCHI3JfXuTYm9e2HS/OZKAR+4kuADV5F84Cry/IaBh9oC8xuGD9QRmd80A85vgLZ2dUjzm2Zi85vm0e1RrrlAoXd12Au9IqQkX1fg9qirCQG+nkiAvwYY4IG2dvUECoNrCH7TglQctuDfHgWd/baMEptrKZDYrg17YitKSmwXCSS2awkBqr5IYrsOmNiAtnb1BRLbdQS/aUVKbK34ia0TMrG1js6NXGuBxHa9yLlRB6Rz3hCdG7kbBJyzjcK5URtCFmkrcGbQliD3jaTseSPxzKAEqfJuJ+AD7Qg+0J7kA+3J50YMPDQQqKIZPtBQpPvqAOy+gLZ2DUnnRh3o50aVoc+L6Rh1Ia6jQKHXSaMLqQx95kPnyDldZwHn7CLinNDn/d4UOae7ScA5bxZxTmha7xrNb1xXAefspjC/6UboX7oL9O7dCXLfQurdbyH27meS5jc9BHygB8EHepJ8oCd5fsPAQyOB+Q3DBxqLzG96Aec3QFu7xqT5TS+x+c2t0e1R7laBQq932Au9sqQk30Tg9qjejA94iQT4PsAAD7S1aypQGPQh+E1fUnHYl357FHb22y9KbK6fQGLrH/bEVo6U2JoJJLb+hADVXCSxDQAmNqCtXXOBxDaA4De3kRLbbfzEBn3e7+3RuZG7XSCxDRQ5N4I+73dQdG7kBgk45x0K50Z3ELLInQJnBncS5L6LlD3vIp4ZVCBV3oMFfGAwwQeGkHxgCPnciIGHFgJVNMMHWop0X3cDuy+grV1L0rnR3fxzI+jzYu6JuhB3j0ChN1SkC4E+8+HeyDndvQLOOUzEOaHP+x0eOacbLuCcI0ScE5rW74vmN+4+Aee8X2F+cz+hfxkp0LuPJMg9itS7jyL27o40v3lAwAceIPjAgyQfeJA8v2HgoZXA/IbhA61F5jejgfMboK1da9L8ZrTY/GZMdHuUGyNQ6D0U9kKvMinJtxG4PeohxoOJRAL8w8AAD7S1aytQGDxM8JuxpOJwLP/2KOjsd1yU2Nw4gcT2SNgTWxVSYmsvkNgeIQSoDiKJ7VFgYgPa2nUQSGyPEvxmPCmxjecnNujzfidE50ZugkBie0zk3Aj6vN/Ho3Mj97iAc05UODeaSMgikwTODCYR5H6ClD2fIJ4Z1CBV3pMFfGAywQemkHxgCvnciIGHzgJVNMMHuoh0X1OB3RfQ1q4L6dxoKv3cqAr0eTFPRl2Ie1Kg0HtKowupAn3mw9ORc7qnBZxzmohzQp/3+0zknO4ZAed8VsQ5oWl9ejS/cdMFnHOGwvxmBqF/eU6gd3+OIPfzpN79eWLvfj5pfjNTwAdmEnxgFskHZpHnNww8dBWY3zB8oJvI/OYF4PwGaGvXjTS/eUFsfvNidHuUe1Gg0Jsd9kKvLuuh/gK3R80mBPieIgF+DjDAA23tegoUBnMIfvMSqTh8iX57FHb2+3KU2NzLAoltbtgTWz1SYustkNjmEgJUH5HENg+Y2IC2dn0EEts8gt/MJyW2+fzEBn3e7yvRuZF7RSCxLRA5N4I+73dhdG7kFgo456sK50avErLIawJnBq8R5F5Eyp6LiGcG9UmV92IBH1hM8IHXST7wOvnciIGH/gJVNMMHBoh0X0uA3RfQ1m4A6dxoCf/cCPq8mKVRF+KWChR6y0S6EOgzH96InNO9IeCcy0WcE/q83xWRc7oVAs65UsQ5oWn9zWh+494UcM63FOY3bxH6l1UCvfsqgtyrSb37amLvfhlpfvO2gA+8TfCBd0g+8A55fsPAw0CB+Q3DBwaJzG/WAOc3QFu7QaT5zRqx+c3a6PYot1ag0Hs37IVeI1KSv0vg9qh3CQF+sEiAfw8Y4IG2doMFCoP3CH6zjlQcruPfHgWd/a6PEptbL5DY3g97YmtMSmz3CCS29wkBaqhIYvsAmNiAtnZDBRLbBwS/2UBKbBv4iQ36vN+N0bmR2yiQ2DaJnBtBn/f7YXRu5D4UcM7NCudGmwlZZIvAmcEWgtwfkbLnR8Qzg6akyvtjAR/4mOADW0k+sJV8bsTAw3CBKprhAyNEuq9twO4LaGs3gnRutI1+blQV+ryYT6IuxH0iUOh9qtGFVIU+82F75Jxuu4Bz7hBxTujzfj+LnNN9JuCcn4s4JzSt74zmN26ngHPuUpjf7CL0L18I9O5fEOT+ktS7f0ns3a8hzW92C/jAboIP7CH5wB7y/IaBh5EC8xuGD4wSmd98BZzfAG3tRpHmN1+JzW++jm6Pcl8LFHrfhL3Qa0FK8qMFbo/6hhDgx4gE+L3AAA+0tRsjUBjsJfjNt6Ti8Fv67VHY2e93UWJz3wkktu/DnthakhLbWIHE9j0hQI0TSWz7gIkNaGs3TiCx7SP4zQ+kxPYDP7FBn/f7Y3Ru5H4USGz7Rc6NoM/7PRCdG7kDAs75k8K50U+ELPKzwJnBzwS5D5Ky50HimUFrUuV9SMAHDhF84BeSD/xCPjdi4GG8QBXN8IEJIt3Xr8DuC2hrN4F0bvQr/9wI+ryYw1EX4g4LFHpHRLoQ6DMffouc0/0m4Jy/izgn9Hm/f0TO6f4QcM6jIs4JTetJRaL5DVAHNB7ToXlkzG98JtH9S3qw4Iy+LT1B7gxAuYN9h/++JUlO2o40v8ko4AMZCT6QieQDmYpw5zcMPEwUmN8wfGCSyPwmM85XHdDWbhJpfpO5iNb8JgvOPrK3R2URKPSyhr3Qa09K8lMEbo/KSgjwU0UCfDZggAfa2k0VKAyyEfwmO6k4zF6EfnsUdPabI0psLodAYjsl7ImtAymxPS2Q2E4hBKhpIoktJzCxAW3tpgkktpwEv8lFSmy5+IkN+rzf3EA9qCa23AKJLU8RTpxDOyf0eb+nRudG7lQB58yrcG6Ul5BF8gmcGeQjyJ2flD3zE88MupAq79MEfOA0gg8UIPlAAfK5EQMP0wWqaIYPzBDpvgoCuy+grd0M0rlRQfq5UTXo82IKRV2IKyRQ6BXW6EKqQZ/5UCRyTldEwDmLijgn9Hm/xSLndMUEnPN0EeeEpvXi0fzGFRdwzhIK85sShP6lpEDvXpIgdylS716K2LvfQprflBbwgdIEHyhD8oEy5PkNAw8zBeY3DB+YJTK/OQM4vwHa2s0izW/OEJvfnBndHuXOFCj0yoa90OtBSvKzBW6PKksI8HNEAnw5YIAH2trNESgMyhH85ixScXgW/fYo7Oz37CixubMFElv5sCe2nqTENlcgsZUnBKh5IomtAjCxAW3t5gkktgoEvzmHlNjO4Sc26PN+z43Ojdy5Aomtosi5EfR5v5WicyNXScA5kxXOjZIJWcQJnBk4gtyVSdmzMvHMoA+p8q4i4ANVCD5QleQDVcnnRgw8LBCoohk+sFCk+6oG7L6AtnYLSedG1fjnRtDnxVSPuhBXXaDQqyHShUCf+VAzck5XU8A5a4k4J/R5v7Uj53S1BZyzjohzQtP6edH8xp0n4JznK8xvzif0L3UFeve6BLnrkXr3esTe/XbS/OYCAR+4gOADF5J84ELy/IaBh0UC8xuGDywWmd9cBJzfAG3tFpPmNxeJzW/qR7dHufoChd7FYS/0BpKS/FKB26MuJgT4ZSIB/hJggAfa2i0TKAwuIfhNA1Jx2IB/exR09tswSmyuoUBiuzTsiW0QKbGtEEhslxIC1EqRxHYZMLEBbe1WCiS2ywh+04iU2BrxExv0eb+No3Mj11ggsV0ucm4Efd7vFdG5kbtCwDmbKJwbNSFkkaYCZwZNCXJfScqeVxLPDAaTKu+rBHzgKoIPNCP5QDPyuREDD6sEqmiGD6wW6b6aA7svoK3datK5UXP6uVF16PNiro66EHe1QKF3jUYXUh36zIcWkXO6FgLO2VLEOaHP+702ck53rYBzXifinNC03iqa37hWAs7ZWmF+05rQv1wv0LtfT5D7BlLvfgOxdx9Gmt+0EfCBNgQfaEvygbbk+Q0DD2sE5jcMH1grMr+5ETi/AdrarSXNb24Um9+0i26Pcu0ECr32YS/0hpOS/DqB26PaEwL8epEA3wEY4IG2dusFCoMOBL/pSCoOO9Jvj8LOfjtFic11EkhsncOe2EaQEtsGgcTWmRCgNookti7AxAa0tdsokNi6EPzmJlJiu4mf2KDP+705OjdyNwsktq4i50bQ5/12i86NXDcB5+yucG7UnZBFbhE4M7iFIHcPUvbsQTwzGEWqvHsK+EBPgg/0IvlAL/K5EQMPmwWqaIYPbBHpvm4Fdl9AW7stpHOjW/nnRtDnxfSOuhDXW6DQ6yPShUCf+dA3ck7XV8A5+4k4J/R5v/0j53T9BZxzgIhzQtP6bdH8xt0m4Jy3K8xvbif0LwMFeveBBLkHkXr3QcTe/WHS/OYOAR+4g+ADd5J84E7y/IaBh60C8xuGD2wTmd/cBZzfAG3ttpHmN3eJzW8GR7dHucEChd6QsBd6Y0lJfrvA7VFDCAF+h0iAvxsY4IG2djsECoO7CX5zD6k4vId/exR09js0SmxuqEBiuzfsiW0cKbHtFEhs9xIC1C6RxDYMmNiAtna7BBLbMILfDCcltuH8xAZ93u+I6NzIjRBIbPeJnBtBn/d7f3Ru5O4XcM6RCudGIwlZZJTAmcEogtwPkLLnA8QzgwmkyvtBAR94kOADo0k+MJp8bsTAw26BKprhA3tEuq8xwO4LaGu3h3RuNIZ+blQD+ryYh6IuxD0kUOg9rNGF1IA+82Fs5JxurIBzjhNxTujzfh+JnNM9IuCcj4o4JzStj4/mN268gHNOUJjfTCD0L48J9O6PEeR+nNS7P07s3SeT5jcTBXxgIsEHJpF8YBJ5fsPAwzcC8xuGD+wVmd88AZzfAG3t9pLmN0+IzW8mR7dHuckChd6UsBd6U0hJ/nuB26OmEAL8PpEAPxUY4IG2dvsECoOpBL95klQcPkm/PQo7+30qSmzuKYHE9nTYE9tUUmLbL5DYniYEqAMiiW0aMLEBbe0OCCS2aQS/eYaU2J7hJzbo836fjc6N3LMCiW26yLkR9Hm/M6JzIzdDwDmfUzg3eo6QRZ4XODN4niD3TFL2nEk8M5hGqrxnCfjALIIPvEDygRfI50YMPBwUqKIZPnBIpPt6Edh9AW3tDpHOjV7knxtBnxczO+pC3GyBQm+OSBcCfebDS5FzupcEnPNlEeeEPu93buScbq6Ac84TcU5oWp8fzW/cfAHnfEVhfvMKoX9ZINC7LyDIvZDUuy8k9u7Pk+Y3rwr4wKsEH3iN5AOvkec3DDwcFpjfMHzgiMj8ZhFwfgO0tTtCmt8sEpvfLI5uj3KLBQq918Ne6M0kJfk/BG6Pep0Q4I+KBPglwAAPtLU7KlAYLCH4zVJScbiUf3sUdPa7LEpsbplAYnsj7IltFimxpT83/IntDUKAynAu3in9FzqxLQcmNqCtXYaQ+40fxJcT/GYFKbGt4Cc26PN+V0bnRm6lQGJ7U+TcCPq837eicyP3loBzrlI4N1pFyCKrBc4MVhPkfpuUPd8mnhnMIVXe7wj4wDsEH1hD8oE15HMjBh4yC1TRDB/IItJ9rQV2X0BbO6T+ghham+DcCK3Td4E6XVAB914LK3B0+i4xLr1QIClpfkE8Pt8jxej3TsC/kk/u5ZD+FdTDyep0HUmn64j+5de/ZxBqn+whz3t+vdeJIHcOkby3HoghoK1dDoFp9ZkEv8klgJfOBLlzi+DlfSBegLZ2uQXwUpbgN3kF8NKFIHc+Ebx8AMQL0NZORX8bgPpbBOyhFpN6qA3EGncuqYfaSKr3N6ZBD4X0r43AHmoTSaebiP41j+RfBQRmhz0JOa6gSIz+EIghoK1dQdLs8MPAnBj+ITgShooIYKgPAUNFRTC0GYghoK1dURKGNhMx5Pda5Qi+VFyg1+pPkLuECIa2ADEEtLUrITCbOIvgN6UF8HIbQe4yInj5CIgXoK2div4+BupvFXA2sZo0m/iY2Du+Rqp7t5L66K1pMJtA+tdW4GxiG0mn29LgnoxPgDpdA8TsWhJmPyFi9nUSZj8l+denaYBZpH99CsTsdpJOt5PvyTibUJ+VFahL7yPIXU6krtoBxBDQ1q6cQB9XnuA35QXwMpIgdwURvHwGxAvQ1q6CAF4qEPymogBeHiDIXUkEL58D8QK0tVPR306g/tYBe6j1pB5qJ7HGXUHqoXaR6v1dadBDIf1rF7CH+oKk0y+I/rWS5F+VBc6TxxNyXBWRGP0lEENAW7sqpPPkL4nnyW+SMFRdAEMTCRiqIYKh3UAMAW3tapAwtJt8T8Y5BF+qLdBrTSbIXUcEQ3uAGALa2tURmE2cS/CbugJ4mUqQu54IXr4C4gVoa6eiv6+RZ+bA2cQ20mzia2Lv+A6p7v2G1Ed/kwazCaR/fQOcTewl6XRvGtyT8S1Qp9uBmN1Bwuy3RMy+S8LsdyT/+i4NMIv0r++AmP2epNPvyfdkVCTUZxcJ1KVzCHLXF6mr9gExBLS1qy/Qx1Ui+E0DAby8TJC7oQhefgDiBWhr11AAL8kEv2kkgJd5BLkbi+DlRyBegLZ2KvrbD9TfTmAPtYvUQ+0n1rgbSD3UAVK9fyANeiikfx0A9lA/kXT6E9G/NpL8q4nAefISQo5rKhKjfwZiCGhr15R0nvwz8Tx5EwlDzRS+7YWAoeYiGDoIxBDQ1q45CUMHyfdkOIIvtRDotd4kyN1SBEOHgBgC2tq1FJhNVCb4TSsBvKwiyN1aBC+/APECtLVT0d+vQP19D5xN7CPNJn4l9o4fk+rew6Q++nAazCaQ/nUYOJs4QtLpkTS4J+M3oE73AzF7gITZ34iY/YSE2d9J/vV7GmAW6V+/AzH7B0mnf5DvyahCqM/aCNSlmwlytxWpq44CMQS0tWsr0MdVJfhNewG8fESQu4MIXpKK4nQJtLXrIICXagS/6SyAl60EubuI4CUdEC9AWzsV/aUH6u8gsIc6ROqhfHlLprwvGos7ST1UhqIcXWQoyu+hkP4V1MPJ6jQjSacZif61i+RfXQXOk78g5LhuIjE6ExBDQFu7bqTzZF9e1nnyFyQM9RDA0FcEDPUUwVBmIIaAtnY9SRjKTMSQ32tVJ/hSb4Feay9B7j4iGMoCxBDQ1q6PwGyiBsFv+gvg5TuC3ANE8JIViBegrZ2K/rIB9Zf+HGAfeg4nZ2cj9o5fk+re7KQ+OnsazCaQ/pUdOJvIQdJpjhPQ6cnyfgpQp5mBmM1CwuwpRMx+S8JsTpJ/5UwDzCL9KycQs7lIOs1F9C+/Lv2NUJ8NDHld+rondwmC3INE6qrcQAwBbe0GCfRxvxP85q6Qy72EhJfBInjJA8QL0NZusABe/iD4zT0hl3spCS9DRfByKhAvQFs7Ff3lRfalwB4qB6mHykuscX8m9VD5SPV+vjTooZD+lQ/YQ+Un6TQ/0b8OkvxruMB5cubCeLlHiMTo04AYAtrajSCdJ59GPE8+RMLQSAEMZSNgaJQIhgoAMQS0tRtFwlAB8j0ZOQi+NDrkGFpG6rXGiGCoIBBDQFs7Ff0VAuqvALDXKkjqtQoRa+EjpDxemNQXFE6DXgvpX4WBvVYRkk6LkM+r8hJy3NiQ57g3SDlunEiMLgrEENDWbpzA/D0fAS/jQy73chJeJojgpRgQL0BbuwkCeMlPwMvEkMu9goSXSSJ4OR2IF6CtnYr+igP1VwTYQxUl9VDFiTVuuoKcHqoEqd4vkQY9FNK/SgB7qJIknZYk+ld6kn9NEZi1FyPk9qkiMboUEENAW7uppFl7KeKsPQMJQ08LYKgEAUPTRDBUGoghoK3dNBKGSpPPq0oRfGl6yDG0ktRrzRDBUBkghoC2dir6OwOov7LAXqscqdc6g1gLZyHl8TNJfcGZadBrIf3rTGCvVZak07Lk86qzCTluZshz3JukHDdLJEaXA2IIaGs3S2D+XoGAl9khl/stEl7miODlLCBegLZ2cwTwci4BL3NDLvcqEl7mieDlbCBegLZ2KvorD9RfeWAPVYHUQ5Un1rg5ST1UBVK9XyENeiikf1UA9lDnkHR6DtG/cpH8a4HArL0GIbcvFInR5wIxBLS1W0iatZ9LnLXnJmFokQCG6hAwtFgEQxWBGALa2i0mYagi+byqLsGXloYcQ6tJvdYyEQxVAmIIaGunor9koP6qA3utGqReK5lYC+cj5XFH6gtcGvRaSP9ywF6rMkmnlcnnVQ0JOW5FyHPc26Qct1IkRlcBYghoa7dSYP5+GQEvq0Iu9zskvKwWwUtVIF6AtnarBfDSmICXNSGXew0JL2tF8FINiBegrZ2K/qoD9Vcb2EPVIfVQ1Yk1bmFSD1WDVO/XSIMeCulfNYA9VE2STmsS/asIyb/WCczaryHk9vUiMboWEENAW7v1pFl7LeKsvSgJQxsEMHQdAUMbRTBUG4ghoK3dRhKGapPPq64n+NLmkGNoLanX2iKCoTpADAFt7VT0dx5Qfw2AvVZDUq91HrEWLkHK4+eT+oLz06DXQvrX+cBeqy5Jp3XJ51WdCDlua8hz3LukHLdNJEbXA2IIaGu3TWD+3oWAl+0hl/s9El52iODlAiBegLZ2OwTwcjMBLztDLvc6El52ieDlQiBegLZ2Kvq7CKi/RsAeqjGph7qIWOOeSeqh6pPq/fpp0EMh/as+sIe6mKTTi4n+VZbkX7sFZu19CLl9j0iMvgSIIaCt3R7SrP0S4qy9HAlD3whgaAABQ3tFMNQAiCGgrd1eEoYakM+rBhJ86fuQY2g9qdfaJ4KhhkAMAW3tVPR3KVB/LYC9VktSr3UpsRauQMrjl5H6gsvSoNdC+tdlwF6rEUmnjcjnVUMJOW5/yHPc+6Qcd0AkRjcGYghoa3dAYP4+jICXgyGX+wMSXg6J4OVyIF6AtnaHBPAygoCXwyGXewMJL0dE8HIFEC9AWzsV/TUB6q8VsIdqTeqhmhBrXEfqoZqS6v2madBDIf2rKbCHupKk0yuJ/lWZ5F9/CMzaHybk9qMiMfoqIIaAtnZHSbP2q4iz9iokDKWvGH4MPUrAUIaKGhhqBsQQ0NYOqb8ghpqRz6seI/hS5pBjaCOp18oigqHmQAwBbe1U9Hc1UH+dgb1WF1KvdTWxFq5ByuPXkPqCa9Kg10L61zXAXqsFSactyOdVTxFyXPaQ57hNpByXQyRGtwRiCGhrlyPkfuPjZRoBL7lCLveHJLzkFsHLtUC8AG3tcgvg5VkCXvKGXO7NJLzkE8HLdUC8AG3tVPTXCqi/rsAeqhuph2pFrHHPJ/VQrUn1fus06KGQ/tUa2ENdT9Lp9UT/qkvyrwICs/Y5hNxeUCRG3wDEENDWriBp1n4DcdZej4ShIgIYmkfAUFERDLUBYghoa1eUhKE25POqBQRfKh5yDG0h9VolRDDUFoghoK2div5uBOqvP7DXGkDqtW4k1sL1SXm8HakvaJcGvRbSv9oBe632JJ22J59XLSPkuNIhz3EfkXJcGZEY3QGIIaCtXRmB+ftyAl7Khlzuj0l4KSeCl45AvABt7coJ4GUlAS/lQy73VhJeKojgpRMQL0BbOxX9dQbqbyCwhxpE6qE6E2vcy0g9VBdSvd8lDXoopH91AfZQN5F0ehPRvxqR/KuiwKz9PUJuryQSo28GYghoa1eJNGu/mThrb0zCUGUBDH1AwFAVEQx1BWIIaGtXhYShruTzqk0EX6oecgxtI/VaNUQw1A2IIaCtnYr+ugP1NxzYa40g9VrdibVwU1Iev4XUF9ySBr0W0r9uAfZaPUg67UE+r/qUkONqhzzHfULKcXVEYnRP5Pe5A3NcHYH5+w4CXuqGXO5PSXipJ4KXXkC8AG3t6gng5XMCXi4KudzbSXipL4KXW4F4AdraqeivN1B/I4E91ChSD9WbWONeQ+qh+pDq/T5p0EMh/asPsIfqS9JpX6J/tSD5VwOBWfteQm5vKBKj+yG/px2Y4xqSZu39iLP2liQMNRLA0D4ChhqLYKg/8ns6gRhqTMJQf/J51X6CLzUJOYZ2kHqtpiIYGgDEENDWTkV/twH1Nx7Ya00g9Vq3EWvh1qQ8fjupL7g9DXotpH/dDuy1BpJ0OpB8XnWEkOOahTzHfUbKcc1FYvQgIIaAtnbNBebvvxPw0iLkcn9OwktLEbzcgfxOTiBeWgrg5SgBL61CLvdOEl5ai+DlTuT3LwHxoqK/u4D6mwjsoSaReqi7iDVuO1IPNZhU7w9Ogx4K6V+DgT3UEJJOhxD9qz3Jv9oIzNqzFcHL3VYkRt8NxBDQ1q4tadZ+N3HW3oGEofYCGMpJwFAHEQzdA8QQ0NauAwlD95DPq/IQfKlzyDG0i9RrdRHB0FDk9y8BMaSiv3uB+psO7LVmkHqte4m1cBdSHh9G6guGpUGvhfSvYcBeazhJp8PJ51WFCTmua8hz3BekHNdNJEaPQH4/BjDHdROYvxcl4KVHyOX+koSXniJ4uQ+IF6CtXU8BvJxOwEvvkMu9m4SXPiJ4uR+IF6CtnYr+RgL1NxPYQ80i9VAjiTXuLaQeahSp3h+VBj0U0r9GAXuoB0g6fYDoXz1I/tVfYNZejpDbB4jE6AeR33sBzHEDSLP2B4mz9p4kDA0UwFAFAoYGiWBoNPK5x0AMDSJhaDT5vKoiwZfuCjmG9pB6rcEiGBoDxBDQ1k5Ffw8B9bcA2GstJPVaDxFr4T6kPP4wqS94OA16LaR/PQzstcaSdDqWfF5Vg5Dj7gl5jvuKlOOGisTocUAMAW3thgrM32sR8DI85HJ/TcLLCBG8PIJ8xjEQLyME8FKHgJeRIZf7GxJeRong5VHk8+yAeFHR33ig/hYBe6jFpB5qPLHGvZ3UQ00g1fsT0qCHQvrXBGAP9RhJp48R/Wsgyb9GC8zaLyHk9jEiMfpxIIaAtnZjSLP2x4mz9kEkDI0VwNBlBAyNE8HQRCCGgLZ240gYmkg+r7qc4EvjQ46hvaRea4IIhiYhn2cHxJCK/p4A6m8VsNdaTeq1niDWwoNJeXwyqS+YnAa9FtK/JgN7rSkknU4hn1ddQ8hxE0Oe474l5bhJIjF6KvJ5Q8AcN0lg/t6SgJcpIZf7OxJeporg5UkgXoC2dlMF8HIdAS9Ph1zu70l4mSaCl6eAeAHa2qno72mg/tYAe6i1pB7qaWKNO4zUQ00j1fvT0qCHQvrXNGAP9QxJp88Q/Ws4yb+mC8zaOxBy+wyRGP0s8jlCwBw3gzRrf5Y4ax9BwtBMAQx1IWBolgiGpiM/Rw7E0CwShqaTz6u6EnxpdsgxtI/Ua80RwdAMIIaAtnYq+nsOqL/NwF5rC6nXeo5YC48i5fHnSX3B82nQayH963lgrzWTpNOZ5POqPoQcNzfkOe4HUo6bJxKjZwExBLS1mycwf+9HwMuCkMv9IwkvC0Xw8gLyM+NAvCwUwMsAAl4WhVzu/SS8LBbBy4vIzwcB8aKiv9lA/W0F9lDbSD3UbGKN+zCph5pDqvfnpEEPhfSvOcAe6iWSTl8i+tdYkn8tFZi1303I7ctEYvTLQAwBbe2WkWbtLxNn7eNIGFohgKFhBAytFMHQXCCGgLZ2K0kYmks+r7qP4EurQo6hA6Rea7UIhuYhPx8ExJCK/uYD9bcb2GvtIfVa84m18ARSHn+F1Be8kga9FtK/XgH2WgtIOl1APq96mJDj1oQ8x/1EynFrRWL0QuT928Act1Zg/j6OgJd1IZf7ZxJe1ovg5VUgXoC2dusF8PIoAS8bQi73QRJeNorg5TUgXoC2dir6WwTU3zfAHmovqYdaRKxxJ5N6qMWken9xGvRQSP9aDOyhXifp9HWif00h+ddmgVn7VEJu3yISo5cg78sG5rgtpFn7EuKsfSoJQ1sFMDSNgKFtIhhairwvB4ihbSQMLSWfV00n+NL2kGPoEKnX2iGCoWVADAFt7VT09wZQfweBvdYhUq/1BrEWnkbK48tJfcHyNOi1kP61HNhrrSDpdAX5vGoOIcftDHmO+4WU43aJxOiVQAwBbe12CczfXybgZXfI5f6VhJc9Inh5E3kPDhAvewTwMo+Al29CLvdhEl72iuDlLeR5CxAvKvpbBdTfYWAPdYTUQ60i1rjPk3qo1aR6f3Ua9FBI/1oN7KHeJun0baJ/zST51/cCs/YlhNy+TyRGvwPEENDWbh9p1v4OcdY+i4Sh/QIYWk7A0AERDK0BYghoa3eAhKE15POqNwm+dDDkGDpC6rUOiWBoLfK8BYghFf29C9Rf5nNx75XlXE4MepdYC88h5fH3SH3Be2nQayH96z1gr7WOpNN1CXQK/5wDjPfKyUw+37fzWTn+Fz5v+byVMcCrr4c/Uv5dJ+nPfy/J8ue/30+5Jkb3gff/Dd7a6K1NRf/6fki/v9T3Ba8eSU94X5R9PiRh4ENijFXQ62aSXjcfR68nyzNLr/57onjcQtLrljTIg0CfcFuAefAjkk4/SoMYgMbAxyRdfJzAv9KDeUfq9zLceyUzZU4HlLmRiMzpgTI3FpE5A1Dmy0VkzgiU+Yo0kjn55F6uCVB/C9NzZEbnsqYitrkSaJtG2TUw2BCov6uSNPyxmQifzcF8ovnr4iWtbhnwNeph8nnEyfLny3wLQe4jpHl6RrDdrwbK7PsQii+g3ziWLdA56xqgLV4XqSdaJGnw2VKEz2tF+LxOhM9WIny2FuHzehE+bxDhs40In21F+LxRhM92Iny2F+GzgwifHUX47CTCZ2cRPruI8HmTCJ83i/DZVYTPbiJ8dhfh8xYRPnuI8NlThM9eInzeKsJnbxE++5D4DPM9DH3TSObkk3u5fkD9LRaZy/ZP0uBzgAift4nwebsInwNF+BwkwucdInzeKcLnXSJ8Dhbhc4gIn3eL8HmPCJ9DRfi8V4TPYSJ8Dhfhc4QIn/eJ8Hm/CJ8jRfgcJcLnAyJ8PijC52gRPseI8PmQCJ8Pi/A5VoTPcSJ8PiLC56MifI4X4XOCCJ+PifD5uAifE0X4nCTC5xMifE4W4XOKCJ9TRfh8UoTPp0T4fFqEz2kifD4jwuezInxOF+Fzhgifz4nw+bwInzNF+JwlwucLIny+KMLnbBE+54jw+ZIIny+L8DlXhM95InzOF+HzFRE+F4jwuVCEz1dF+HxNhM9FInwuFuHzdRE+l4jwuVSEz2UifL4hwudyET5XiPC5UoTPN0X4fEuEz1UifK4W4fNtET7fEeFzjQifa0X4fFeEz/dE+Fwnwud6ET7fF+HzAxE+N4jwuVGEz00ifH4owudmET63iPD5kQifH4vwuVWEz20ifH4iwuenInxuF+Fzhwifn4nw+bkInztF+NwlwucXInx+KcLnbhE+94jw+ZUIn1+L8PmNCJ97Rfj8VoTP70T4/F6Ez30ifP4gwuePInzuF+HzgAifP4nw+bMInwdF+DwkwucvInz+KsLnYRE+j4jw+ZsIn7+L8PmHCJ9HRfj031CBz3QifKYX4TMDmM94/k72ee6Xeu/xQVG83BlJ9kkP5jNTOpwuPy6q4ZOZRbCTRYTPrCJ8ZhPhM7sInzlE+DxFhM+cInzmEuEztwifeUT4PFWEz7wifOYT4TO/CJ+nifBZQITPgiJ8FhLhs7AIn0VE+CwqwmcxET5PF+GzuAifJUT4LCnCZykRPkuL8FlGhM8zRPg8U4TPsiJ8lhPh8ywRPs8W4bO8CJ8VRPg8R4TPc0X4rCjCZyURPpNF+HQifFYW4bNKyO8NmF8wKemMQvj3/aNiuOW+0ZN5fRH8+x6tyPHLDGC/rIrzSwe0tTsacr/x8XImAS/pK4UfL+8T8JKhkgZeqgHxArS1yxByv/HxUpaAl8wCePmAgJcsInipDsQL0NaOpT/0PYs1gPcsbiqiIXNNoMwfishcCyjz5iLhzwXlCLkgu0Au2ELIBTlEckFtYC4A2trlEKidziLgJZcAXj4i4CW3CF7qAPECtLXLLVI7nQfMqdtE6ojzgTJvF6gjzibExbwCcXEHIS7mE4mLdYFxEWhrl0+gjihPwEsBAbx8RsBLQRG81APiBWhrV1AALxUIeCkigJfPCXgpKoKXC4B4AdraFRWpuy8E1qBfiNTdFwFl/lJE5vpAmXcL9BrnEHJBcYFcsIeQC0qI5IKLgbkAaGtXQqB2OpeAl9ICePmKgJcyIni5BIgXoK1dGZHaqQEwp+4VqSMaAmX+XqCOqEiIi2UF4uI+QlwsJxIXLwXGRaCtXTmBOqISAS/lBfDyAwEvFUTwchkQL0BbuwoCeEkm4KWiAF5+JOClkgheGgHxArS1qyRSdzcG1qA/idTdlwNl/llE5iuAMh8U6DUcIRdUFsgFhwi5oIpILmgCzAVAW7sqArVTZQJeqgvg5RcCXmqI4KUpEC9AW7saIrXTlcCcekSkjrgKKPMfAnVEFUJcrC0QF48S4mIdkbjYDBgXgbZ2dQTqiKoEvNQVwEtSUfz71hPBS3MgXoC2dvUE8FKNgJeLBPCSjoCX+iJ4uRqIF6CtXX2RuvsaYA2asaiGzC2AMmcSkbklUObMRcOfC6oTckEDgVyQhZALGorkgmuBuQBoa9dQoHaqQcBLIwG8ZCXgpbEIXq4D4gVoa9dYpHZqBcypOUTqiNZAmXMJ1BGvF8S/bxOBuJibEBebisTF64FxEWhr11SgjlhCwEszAbzkIeCluQhebgDiBWhr11wAL0sJeGkhgJdTCXhpKYKXNkC8AG3tWorU3W2BNWh+kbr7RqDMp4nI3A4ocwGBXmMZIRe0EsgFBQm5oLVILmgPzAVAW7vWIrmgAzBGFBGIEW8QYkQbgRhRlBAj2orEiI7AGAG0tWsr0F8tJ+ClvQBeihHw0kEEL52AeAHa2nUQwMsKAl46C+DldAJeuojgpTMQL0Bbuy4iNWgXYA1aUqQ3vwkocykRmW8GylxaoNdYScgFXQVyQRlCLugmkgu6AnMB0Naum0gu6AaMEWUFYsSbhBjRQyBGlCPEiJ4iMaI7MEYAbe16CvRXbxHw0lsAL2cR8NJHBC+3APECtLXrI4CXVQS89BfAy9kEvAwQwUsPIF6AtnYDRGrQnsAa9ByR3rwXUOZzRWS+FShzRYFeYzUhFwwUyAWVCLlgkEgu6A3MBUBbu0EiuaAPMEZUFogRbxNixF0CMaIKIUYMFokRfYExAmhrN1igv3qHgJd7BPBSlYCXoSJ46QfEC9DWbqgAXtYQ8DJcAC/VCHgZIYKX/kC8AG3tRojUoAOANWhNkd78NqDMtURkvh0oc22BXmMtIReMFMgFdQi5YJRILhgIzAVAW7tRIrlgEDBG1BWIEe8SYsRogRhRjxAjxojEiDuAMQJoazdGoL96j4CXsQJ4uYCAl3EieLkTiBegrd04AbysI+BlvABeLiTgZYIIXu4C4gVoazdBpAYdDKxBLxbpzYcAZb5EROa7gTI3EOg11hNywUSBXNCQkAsmieSCe4C5AGhrN0kkFwwFxohGAjHifUKMmCIQIxoTYsRUkRhxLzBGAG3tpgr0Vx8Q8PK0AF4uJ+BlmghehgHxArS1myaAlw0EvEwXwMsVBLzMEMHLcCBegLZ2M0Rq0BHAGvRKkd78PqDMV4nIfD9Q5mYCvcZGQi6YKZALmhNywSyRXDASmAuAtnazRHLBKGCMaCEQIzYRYsRsgRjRkhAj5ojEiAeAMQJoazdHoL/6kICXuQJ4uZaAl3kieHkQiBegrd08AbxsJuBlgQBeriPgZaEIXkYD8QK0tVsoUoOOAdag14v05g8BZb5BROaHgTK3Eeg1thBywSKBXNCWkAsWi+SCscBcALS1WyySC8YBY0R7gRjxESFGLBWIER0IMWKZSIx4BBgjgLZ2ywT6q48JeFkhgJeOBLysFMHLo0C8AG3tVgrgZSsBL6sE8NKJgJfVIngZD8QL0NZutUgNOgFYg94k0ps/BpT5ZhGZHwfK3FWg19hGyAVrBHJBN0IuWCuSCyYCcwHQ1m6tSC6YBIwRPQRixCeEGLFOIEb0JMSI9SIx4glgjADa2q0X6K8+JeBlgwBeehHwslEEL5OBeAHa2m0UwMt2Al42C+DlVgJetojgZQoQL0Bbuy0iNehUYA3aV6Q3fxIocz8RmZ8CytxfoNfYQcgFWwVywQBCLtgmkgueBuYCoK3dNpFcMA0YIwYKxIjPCDFiu0CMGESIETtEYsQzwBgBtLXbIdBffU7Ay04BvNxBwMsuEbw8C8QL0NZulwBedhLwslsAL3cS8LJHBC/TgXgB2trtEalBZwBr0CEivflzQJnvFpH5eaDM9wj0GrsIueAbgVwwlJAL9orkgpnAXAC0tdsrkgtmAWPEcIEY8QUhRnwvECNGEGLEPpEY8QIwRgBt7fYJ9FdfEvCyXwAv9xHwckAELy8C8QK0tTsggJfdBLwcFMDL/QS8HBLBy2wgXoC2dodEatA5wBr0AZHe/CWgzA+KyPwyUObRAr3GHkIuOCyQC8YQcsERkVwwF5gLgLZ2R0RywTxgjBgrECO+IsSIPwRixDhCjDgqEiPmA2ME0NbuqEB/9TUBL+mTw4+XRwh4yZCsgZdXgHgB2tplCLnf+Hj5hoCXzAJ4eZSAlywieFkAxAvQ1o6lP3QNuhBYgz4m0pu/CpT5cRGZXwPKPFGg19hLyAXZBXLBJEIuyCGSCxYBcwHQ1i6HSC5YDIwRUwRixLeEGJFLIEZMJcSI3CIx4nVgjADa2uUW6K++I+AlrwBeniTgJZ8IXpYA8QK0tcsngJfvCXgpIICXpwh4KSiCl6VAvABt7QqK1KDLgDXoMyK9+RtAmZ8VkXk5UObpAr3GPkIuKCKQC2YQckFRkVywApgLgLZ2RUVywUpgjJgpECN+IMSI4gIxYhYhRpQQiRFvAmME0NauhEB/9SMBL6UF8PICAS9lRPDyFhAvQFu7MgJ42U/AS1kBvLxIwEs5EbysAuIFaGtXTqQGXQ2sQV8S6c3fBsr8sojM7wBlnivQaxwg5ILyArlgHiEXVBDJBWuAuQBoa1dBJBesBcaIBQIx4idCjKgoECMWEmJEJZEY8S4wRgBt7SoJ9Fc/E/BSWQAvrxLwUkUEL+8B8QK0tasigJeDBLxUF8DLawS81BDByzogXoC2djVEatD1wBr0dZHe/H2gzEtEZP4AKPNSgV7jECEX1BbIBcsIuaCOSC7YAMwFQFu7OiK5YCMwRqwQiBG/EGJEXYEYsZIQI+qJxIhNwBgBtLWrJ9Bf/UrAy0UCeHmTgJf6Inj5EIgXoK1dfQG8HCbgpYEAXt4i4KWhCF42A/ECtLVrKFKDbgHWoG+L9OYfAWV+R0Tmj4EyrxHoNY4QckEjgVywlpALGovkgq3AXAC0tWsskgu2AWPEOlJcTAeW+ZN0Gnx+KsLndhE+d4jw+ZkIn5+L8LlThM9dInx+IcLnlyJ87hbhc48In1+J8Pl1urSpEU/680JAmb9JI5mTT+7l9gLr4o9E6uJvRXDznQif34vwuU+Ezx9E+PxRhM/9InweEOHzJxE+fxbh86AIn4dE+PxFhM9fRfg8LMLnERE+fxPh83cRPv8Q4fOoCJ9+k6nAZzoRPtOL8JlBhM+MInxmEuEzswifWUT4zCrCZzYRPrOL8JlDhM9TRPjMKcJnLhE+c4vwmUeEz1NF+Mwrwmc+ET7zi/B5mgifBUT4LCjCZyERPguL8FlEhM+iInwWE+HzdBE+i4vwWUKEz5IifJYS4bO0CJ9lRPg8Q4TPM0X4LCvCZzkRPs8S4fNsET7Li/BZQYTPc0T4PFeEz4oifFYS4TNZhE8nwmdlET6riPBZVYTPaiJ8Vhfhs4YInzVF+KwlwmdtET7riPB5ngif54vwWVeEz3oifF4gwueFInxeJMJnfRE+Lxbh8xIRPhuI8NmQxGf6OD5P9nPQmYAyXyoic2agzJeJyJwFKHMjEZmzAmVuLCJzNqDMl4vInB0o8xUiMucAytxEROZTgDI3FZE5J1DmK0VkzgWU+SoRmXMDZW4mInMeoMzNRWQ+FSjz1SIy5wXKfI2IzPmAMrcQkTk/UOaWIjKfBpT5WhGZCwBlvk5E5oJAmVuJyFwIKHNrEZkLA2W+XkTmIkCZbxCRuShQ5jYiMhcDytxWRObTgTLfKCJzcaDM7URkLgGUub2IzCWBMncQkbkUUOaOIjKXBsrcSUTmMkCZO4vIfAZQ5i4iMp8JlPkmoMwZk/77vUglUwS+zFuNvNXYW5d76wpvNfFWU29d6a2rvNXMW829dbW3rvFWC2+19Na13rrOW6281dpb13vrBm+18VZbb93orXbeau+tDt7q6K1O3ursrS7euslbN3urq7e6eau7t27xVg9v9fRWL2/d6q3e3urjrb7e6uet/t4a4K3bvHW7twZ6a5C37vDWnd66y1uDvTXEW3d76x5vDfXWvd4a5q3h3hrhrfu8db+3RnprlLce8NaD3hrtrTHeeshbD3trrLfGeesRbz3qrfHemuCtx7z1uLcmemuSt57w1mRvTfHWVG896a2nvPW0t6Z56xlvPeut6d6a4a3nvPW8t2Z6a5a3XvDWi96a7a053nrJWy97a6635nlrvrde8dYCby301qvees1bi7y12Fuve2uJt5Z6a5m33vDWcm+t8NZKb73prbe8tcpbq731trfe8dYab6311rvees9b67y13lvve+sDb23w1kZvbfLWh97a7K0t3vrIWx97a6u3tnnrE2996q3t3trhrc+89bm3dnprl7e+8NaX3trtrT3e+spbX3vrG2/t9da33vrOW997a5+3fvDWj97a760D3vrJWz9766C3DnnrF2/96q3D3jrird+89bu3/vDWUW/5N7+k81Z6b2XwVkZvZfJWZm9l8VZWb2XzVnZv5fDWKd7K6a1c3srtrTzeOtVbeb2Vz1v5vXWatwp4q6C3CnmrsLeKeKuot4p563RvFfdWCW+V9FYpb5X2VhlvneGtM71V1lvlvHWWt872VnlvVfDWOd4611sVvVXJW8nect6q7K0q3qrqrWrequ6tGt6q6a1a3qrtrTreOs9b53urrrfqeesCb13orYu8Vd9bF3vrEm818FZDb13qrcu81chbjb11ubeu8FYTbzX11pXeuspbzbzV3FtXe+sab7XwVktvXeut67zVylutvXW9t27wVhtvtfXWjd5q56323urgrY7e6uStzt7q4q2bvHWzt7p6q5u3unvrFm/18FZPb/Xy1q3e6u2tPt7q661+3urvrQHeus1bt3troLcGeesOb93prbu8NdhbQ7x1t7fu8dZQb93rrWHeGu6tEd66z1v3e2ukt0Z56wFvPeit0d4a462HvPWwt8Z6a5y3HvHWo94a760J3nrMW497a6K3JnnrCW9N9tYUb0311pPeespbT3trmree8daz3prurRnees5bz3trprdmeesFb73ordnemuOtl7z1srfmemuet+Z76xVvLfDWQm+96q3XvLXIW4u99bq3lnhrqbeWeesNby331gpvrfTWm956y1urvLXaW2976x1vrfHWWm+96633vLXOW+u99b63PvDWBm/53yXvf9e2//3B/nei+t/r6X/Ppf+9j/734vnf7eZ/15n/PWL+d3T533/1mbf8723yvxPJ/74h/7t8/O/J8b+Dxv9+F/+7U/zvJfG/p8P/Dgz/OyH871vwv8vA/54A/xn8/vPt/WfH+89l95957j9P3H9Wt/8cbP8Z0/7zm/1nI/vPHfaf6es/L9d/Fq3/nFc/qfvPJ/Wf/ek/V9N/ZqX/PEj/WYv+cwz9ZwT6z9/zn23nPzfOfyab/7wz/1li/nO6/Gdg+c+X8p/d5D8X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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000004c141a0"},{"kind":"string","value":"EcdsaPublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000020"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000040"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"EcdsaRAccount"}},{"name":"fields","value":{"fields":[{"name":"public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"EcdsaRAccount::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":"EcdsaRAccount::entrypoint_parameters"}}],"kind":"struct","path":"EcdsaRAccount::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":"EcdsaRAccount::constructor_parameters"}}],"kind":"struct","path":"EcdsaRAccount::constructor_abi"}]}},"file_map":{"103":{"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, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n 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, PUBLIC_DISPATCH_SELECTOR\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct 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 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 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 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 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 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 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 // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = 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 // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\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 call_request = PublicCallRequest { contract_address, call_context, args_hash, 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 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 // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = 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 function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\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.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\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"},"122":{"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: [u8; 32] = pk.x.to_be_bytes();\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\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained 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 unconstrained 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"},"124":{"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"},"125":{"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, NullifiableNote},\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, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\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 let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\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\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\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 let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\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, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\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 notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"126":{"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 */\npub struct 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 */\npub struct 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"},"135":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\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>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\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>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\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>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\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> {\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// 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>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\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 unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: 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> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\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"},"136":{"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, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\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: [u8; 32] = serialized_note[selector.index].to_be_bytes();\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>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\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 assert(\n compare(value_field, select.comparator, select.value.to_field()), \"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>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, 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> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\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, 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, 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> + NullifiableNote + 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_array(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>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\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].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\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\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<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_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"},"138":{"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]\nunconstrained fn 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"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all 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_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\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"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, PartialAddress}, public_keys::{PublicKeys, NpkM, IvpkM, OvpkM, TpkM},\n point::Point\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(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"},"146":{"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) -> Field {}\n\npub unconstrained 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) -> Field {\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) -> Field {}\n\npub unconstrained 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) -> Field {\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\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"148":{"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 unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"151":{"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/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub 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) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<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) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\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 fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\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\npub unconstrained fn get_notes<Note, let N: 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> {\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/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"153":{"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, constants::CONTRACT_INSTANCE_LENGTH,\n 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\npub unconstrained 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 = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\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"},"155":{"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\npub unconstrained 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"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<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\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(contract_address: AztecAddress, message: T, counter: u32) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n"},"159":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, public_keys::{OvpkM, IvpkM},\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, 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 oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key}\n};\n\npub fn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\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 = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, 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 (P + 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\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\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(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(plaintext: [u8; P], 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(plaintext, iv, sym_key)\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.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [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: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(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();\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\nmod test {\n use crate::{encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext}};\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, public_keys::{OvpkM, IvpkM}, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_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 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 plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\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_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\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_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, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\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 let plaintext = [\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, 2, 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, 1, 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, 1, 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, 2, 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, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, 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 #[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 ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, 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"},"163":{"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_ovsk_app, encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, OvpkM, IvpkM}, hash::sha256_to_field,\n abis::note_hash::NoteHash\n};\n\nfn compute_raw_note_log<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\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 // TODO(#8589): use typesystem to skip this check when not needed\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\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: 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> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: 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> {\n | e: NoteEmission<Note> | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log<let M: u32>(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::{PublicKeys, IvpkM, ToPoint}, scalar::Scalar, point::Point};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse std::aes128::aes128_encrypt;\n\npub struct 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();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn 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 = 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"},"184":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\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\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<let N: u32>(contract_address: AztecAddress, log: [u8; N]) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\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] = log[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: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\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\npub struct 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 if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn 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 serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"193":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\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.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\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\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait 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 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\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\npub trait 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 {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl <let N: u32> Deserialize<N> for str<N> {\n fn deserialize(fields: [Field; N]) -> Self {\n str<N>::from(fields.map(|value| value as u8))\n }\n}\n"},"216":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash\n},\n constants::{AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\npub struct 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 { inner: 0 }\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 compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys_hash: PublicKeysHash\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(contract_class_id, salted_initialization_hash);\n\n AztecAddress::compute(public_keys_hash, partial_address)\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"},"218":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct 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"},"221":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct 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"},"227":{"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"},"24":{"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.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub 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 pub 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 pub 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 { x: self.x, y: -self.y, is_infinite: self.is_infinite }\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)\n | ((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.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub 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 pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\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 function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because 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\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"246":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub 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"},"25":{"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\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained 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: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_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, compute_lt, assert_gt, gt, 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"},"253":{"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/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\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]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\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#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"254":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::POINT_LENGTH,\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct 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\npub struct 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\npub struct 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\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\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]\nunconstrained fn 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]\nunconstrained fn 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]\nunconstrained fn 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"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\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 // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_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; N]` array.\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^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` 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 #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array 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^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` 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 #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\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: [u1; 32] = exponent.to_le_bits();\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 `elem` {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 /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N-1-i] as Field) * v;\n v = v * 256;\n }\n result\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 x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"260":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 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 { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod 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\npub use 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\n#[inline_always]\npub fn pedersen_commitment_with_separator<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// 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#[no_predicates]\npub fn pedersen_hash_with_separator<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#[field(bn254)]\npub fn 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>(domain_separator_bytes: [u8; M], starting_index: u32) -> [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\nfn 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();\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)]\npub trait 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.)\npub trait 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.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\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 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"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\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 /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\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 /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\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 the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\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 of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\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<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"318":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct 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)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\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 { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"338":{"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\n};\nuse super::utils::field::field_from_bytes;\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<let N: u32>(_vk: VerificationKey<N>) -> 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: [u8; 32] = inputs[i].to_be_bytes();\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: [u8; 32] = input[offset].to_be_bytes();\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 // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\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 // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\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 verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\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 poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 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\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\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\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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"},"339":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n public_keys::PublicKeys, contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys : PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\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 let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11]\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: PublicKeys::deserialize(\n [\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15]\n ]\n )\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"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct 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 pub(crate) 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\npub struct 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 { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4*(i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\nunconstrained fn build_msg_block_iter<let N: u32>(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n for k in 0..block_input {\n msg_block[k] = msg[msg_start + k];\n }\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\n let mut msg_byte_ptr: u32 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n\n for k in msg_start..msg_end {\n if k < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\nglobal BLOCK_SIZE = 64;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n\n for i in msg_byte_ptr..56 {\n msg_block[i] = 0;\n }\n\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..8 {\n msg_block[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4*j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 0x8f, 0xfe, 0x73, 0x2b\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94, 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154, 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213, 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186, 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 119, 30, 63, 129, 143, 32, 96\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n}\n"},"404":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr","source":"use dep::aztec::prelude::{NoteHeader, NoteInterface, NullifiableNote, 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 macros::notes::note_custom_interface, generators::Ga1 as Gx_1, generators::Ga2 as Gx_2,\n generators::Ga3 as Gy_1, generators::Ga4 as Gy_2, generators::Ga5 as Gnpk_m_hash, generators::G_slot\n};\n\nuse std::hash::from_field_unsafe;\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: u32 = 5;\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#[note_custom_interface]\npub struct 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> 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:[u8; 32] = serialized_note[0].to_be_bytes();\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:[u8; 32] = serialized_note[2].to_be_bytes();\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 to_be_bytes(self, storage_slot: Field) -> [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] = [0; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = EcdsaPublicKeyNote::get_note_type_id().to_be_bytes();\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: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn get_note_type_id() -> Field {\n comptime\n {\n let bytes = \"EcdsaPublicKeyNote\".as_bytes();\n let hash = aztec::protocol_types::hash::poseidon2_hash_bytes(bytes);\n let hash_bytes = hash.to_be_bytes::<4>();\n aztec::protocol_types::utils::field::field_from_bytes(hash_bytes, true)\n }\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn compute_note_hash(self) -> Field {\n let serialized = self.serialize_content();\n std::embedded_curve_ops::multi_scalar_mul(\n [Gx_1, Gx_2, Gy_1, Gy_2, Gnpk_m_hash, G_slot],\n [\n from_field_unsafe(serialized[0]),\n from_field_unsafe(serialized[1]),\n from_field_unsafe(serialized[2]),\n from_field_unsafe(serialized[3]),\n from_field_unsafe(serialized[4]),\n from_field_unsafe(self.get_header().storage_slot)\n ]\n ).x\n }\n}\n\nimpl NullifiableNote for EcdsaPublicKeyNote {\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 [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained 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 [\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"},"405":{"path":"/usr/src/noir-projects/noir-contracts/contracts/ecdsa_r_account_contract/src/main.nr","source":"// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaRAccount {\n use dep::aztec::prelude::{PrivateContext, PrivateImmutable};\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note,\n keys::getters::get_public_keys,\n macros::{storage::storage, functions::{private, initializer, view, noinitcheck}}\n };\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 #[storage]\n struct Storage<Context> {\n public_key: PrivateImmutable<EcdsaPublicKeyNote, Context>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[private]\n #[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_public_keys(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(&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 #[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 #[private]\n #[noinitcheck]\n #[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] = unsafe {\n get_auth_witness(outer_hash)\n };\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();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n std::ecdsa_secp256r1::verify_signature(public_key.x, public_key.y, signature, hashed_message)\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct 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 pub 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 if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\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 /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\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 /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\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 /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\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 /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\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 /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\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 /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\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 /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\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 /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\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 /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\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"},"75":{"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\npub struct 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"},"76":{"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::{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 `poseidon2_hash_bytes(\"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 = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"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 comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\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(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\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 comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\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 comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\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 comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"77":{"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;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct 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(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\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_array(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"},"79":{"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: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct 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(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\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_array(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"},"81":{"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 */\npub unconstrained fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"83":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct 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<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\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<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\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 pub unconstrained 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 pub unconstrained fn view_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\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"}}}
|