From ce60d745a4de1c8f3e736eb650c6ca6136f74077 Mon Sep 17 00:00:00 2001 From: "github-merge-queue[bot]" Date: Mon, 24 Jun 2024 13:43:24 +0000 Subject: [PATCH] deploy: f681243b30b7f2e1462197fe6c51902869303ba1 --- cairo_native/all.html | 2 +- cairo_native/index.html | 4 +- cairo_native/sidebar-items.js | 2 +- .../trait.StarknetSyscallHandler.html | 2 +- cairo_native/starknet_stub/index.html | 2 + cairo_native/starknet_stub/sidebar-items.js | 1 + .../starknet_stub/struct.ContractLogs.html | 113 +- .../starknet_stub/struct.StubEvent.html | 114 +- .../struct.StubSyscallHandler.html | 151 +- cairo_native/utils/index.html | 2 +- cairo_native_run/all.html | 2 +- .../utils/test/enum.TestStatus.html | 2 +- .../utils/test/fn.display_tests_summary.html | 2 +- .../utils/test/fn.filter_test_cases.html | 2 +- .../utils/test/fn.find_testable_targets.html | 2 +- cairo_native_run/utils/test/fn.run_tests.html | 2 +- cairo_native_run/utils/test/index.html | 2 +- cairo_native_run/utils/test/sidebar-items.js | 2 +- .../utils/test/struct.TestResult.html | 2 +- .../utils/test/struct.TestsSummary.html | 2 +- cairo_native_test/all.html | 2 +- .../utils/test/enum.TestStatus.html | 2 +- .../utils/test/fn.display_tests_summary.html | 2 +- .../utils/test/fn.filter_test_cases.html | 2 +- .../utils/test/fn.find_testable_targets.html | 2 +- .../utils/test/fn.run_tests.html | 2 +- cairo_native_test/utils/test/index.html | 2 +- cairo_native_test/utils/test/sidebar-items.js | 2 +- .../utils/test/struct.TestResult.html | 2 +- .../utils/test/struct.TestsSummary.html | 2 +- scarb_native_dump/all.html | 2 +- .../utils/test/enum.TestStatus.html | 2 +- .../utils/test/fn.display_tests_summary.html | 2 +- .../utils/test/fn.filter_test_cases.html | 2 +- .../utils/test/fn.find_testable_targets.html | 2 +- .../utils/test/fn.run_tests.html | 2 +- scarb_native_dump/utils/test/index.html | 2 +- scarb_native_dump/utils/test/sidebar-items.js | 2 +- .../utils/test/struct.TestResult.html | 2 +- .../utils/test/struct.TestSyscallHandler.html | 216 -- .../utils/test/struct.TestsSummary.html | 2 +- scarb_native_test/all.html | 2 +- .../utils/test/enum.TestStatus.html | 2 +- .../utils/test/fn.display_tests_summary.html | 2 +- .../utils/test/fn.filter_test_cases.html | 2 +- .../utils/test/fn.find_testable_targets.html | 2 +- .../utils/test/fn.run_tests.html | 2 +- scarb_native_test/utils/test/index.html | 2 +- scarb_native_test/utils/test/sidebar-items.js | 2 +- .../utils/test/struct.TestResult.html | 2 +- .../utils/test/struct.TestsSummary.html | 2 +- search-index.js | 10 +- .../cairo_native/cairo_native-desc-0-.js | 2 +- .../cairo_native_run-desc-0-.js | 2 +- .../cairo_native_test-desc-0-.js | 2 +- .../scarb_native_dump-desc-0-.js | 2 +- .../scarb_native_test-desc-0-.js | 2 +- src-files.js | 2 +- src/cairo_native/executor/aot.rs.html | 18 +- src/cairo_native/lib.rs.html | 2 + src/cairo_native/starknet_stub.rs.html | 2445 +++++++++++++++++ src/cairo_native/utils.rs.html | 516 +--- src/cairo_native_run/utils/test.rs.html | 1944 +------------ src/cairo_native_test/utils/test.rs.html | 1944 +------------ src/scarb_native_dump/utils/test.rs.html | 1944 +------------ src/scarb_native_test/utils/test.rs.html | 1944 +------------ .../starknet/trait.StarknetSyscallHandler.js | 6 +- trait.impl/core/clone/trait.Clone.js | 2 +- trait.impl/core/default/trait.Default.js | 2 +- trait.impl/core/fmt/trait.Debug.js | 2 +- trait.impl/core/marker/trait.Freeze.js | 10 +- trait.impl/core/marker/trait.Send.js | 10 +- trait.impl/core/marker/trait.Sync.js | 10 +- trait.impl/core/marker/trait.Unpin.js | 10 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 10 +- .../panic/unwind_safe/trait.UnwindSafe.js | 10 +- 76 files changed, 2664 insertions(+), 8876 deletions(-) create mode 100644 cairo_native/starknet_stub/index.html create mode 100644 cairo_native/starknet_stub/sidebar-items.js rename cairo_native_test/utils/test/struct.TestSyscallHandler.html => cairo_native/starknet_stub/struct.ContractLogs.html (63%) rename cairo_native_run/utils/test/struct.TestSyscallHandler.html => cairo_native/starknet_stub/struct.StubEvent.html (63%) rename scarb_native_test/utils/test/struct.TestSyscallHandler.html => cairo_native/starknet_stub/struct.StubSyscallHandler.html (58%) delete mode 100644 scarb_native_dump/utils/test/struct.TestSyscallHandler.html create mode 100644 src/cairo_native/starknet_stub.rs.html diff --git a/cairo_native/all.html b/cairo_native/all.html index 51682f1e3..2347b42c2 100644 --- a/cairo_native/all.html +++ b/cairo_native/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

Traits

Functions

Type Aliases

Constants

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Traits

Functions

Type Aliases

Constants

\ No newline at end of file diff --git a/cairo_native/index.html b/cairo_native/index.html index 01b377b03..a8bf347d4 100644 --- a/cairo_native/index.html +++ b/cairo_native/index.html @@ -1,4 +1,4 @@ -cairo_native - Rust

Crate cairo_native

source ·
Expand description

§Cairo Sierra to MLIR compiler and JIT engine

+cairo_native - Rust

Crate cairo_native

source ·
Expand description

§Cairo Sierra to MLIR compiler and JIT engine

This crate is a compiler and JIT engine that transforms Sierra (or Cairo) sources into MLIR, which can be JIT-executed or further compiled into a binary @@ -78,4 +78,4 @@

§Proje ├─ error.rs - Error handling ├─ bin - Binary programs ├─ types - Cairo to MLIR type information -

Modules§

Structs§

Enums§

Functions§

  • Run the compiler on a program. The compiled program is stored in the MLIR module.
  • Converts a MLIR module to a compile object, that can be linked with a linker.
  • Links the passed object into a shared library, stored on the given path.
\ No newline at end of file +

Modules§

Structs§

Enums§

Functions§

\ No newline at end of file diff --git a/cairo_native/sidebar-items.js b/cairo_native/sidebar-items.js index 3de4dee85..7aad8ba46 100644 --- a/cairo_native/sidebar-items.js +++ b/cairo_native/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["OptLevel"],"fn":["compile","module_to_object","object_to_shared_lib"],"mod":["cache","context","debug_info","error","execution_result","executor","libfuncs","metadata","module","starknet","types","utils","values"],"struct":["LLVMCompileError"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["OptLevel"],"fn":["compile","module_to_object","object_to_shared_lib"],"mod":["cache","context","debug_info","error","execution_result","executor","libfuncs","metadata","module","starknet","starknet_stub","types","utils","values"],"struct":["LLVMCompileError"]}; \ No newline at end of file diff --git a/cairo_native/starknet/trait.StarknetSyscallHandler.html b/cairo_native/starknet/trait.StarknetSyscallHandler.html index 507822e1f..f1c181edb 100644 --- a/cairo_native/starknet/trait.StarknetSyscallHandler.html +++ b/cairo_native/starknet/trait.StarknetSyscallHandler.html @@ -237,4 +237,4 @@ &mut self, p: Secp256r1Point, remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

Provided Methods§

source

fn cheatcode(&mut self, _selector: Felt, _input: &[Felt]) -> Vec<Felt>

Implementors§

source§

impl StarknetSyscallHandler for DummySyscallHandler

\ No newline at end of file +) -> SyscallResult<(U256, U256)>

Provided Methods§

source

fn cheatcode(&mut self, _selector: Felt, _input: &[Felt]) -> Vec<Felt>

Implementors§

source§

impl StarknetSyscallHandler for &mut StubSyscallHandler

source§

impl StarknetSyscallHandler for DummySyscallHandler

\ No newline at end of file diff --git a/cairo_native/starknet_stub/index.html b/cairo_native/starknet_stub/index.html new file mode 100644 index 000000000..4c4a6f57b --- /dev/null +++ b/cairo_native/starknet_stub/index.html @@ -0,0 +1,2 @@ +cairo_native::starknet_stub - Rust

Module cairo_native::starknet_stub

source ·
Expand description

A (somewhat) usable implementation of the starknet syscall handler trait.

+

Structs§

\ No newline at end of file diff --git a/cairo_native/starknet_stub/sidebar-items.js b/cairo_native/starknet_stub/sidebar-items.js new file mode 100644 index 000000000..24ef7a7a7 --- /dev/null +++ b/cairo_native/starknet_stub/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["ContractLogs","StubEvent","StubSyscallHandler"]}; \ No newline at end of file diff --git a/cairo_native_test/utils/test/struct.TestSyscallHandler.html b/cairo_native/starknet_stub/struct.ContractLogs.html similarity index 63% rename from cairo_native_test/utils/test/struct.TestSyscallHandler.html rename to cairo_native/starknet_stub/struct.ContractLogs.html index 3d96be31c..883c7aa61 100644 --- a/cairo_native_test/utils/test/struct.TestSyscallHandler.html +++ b/cairo_native/starknet_stub/struct.ContractLogs.html @@ -1,110 +1,12 @@ -TestSyscallHandler in cairo_native_test::utils::test - Rust

Struct cairo_native_test::utils::test::TestSyscallHandler

source ·
pub struct TestSyscallHandler;

Trait Implementations§

source§

impl StarknetSyscallHandler for TestSyscallHandler

source§

fn get_block_hash( - &mut self, - _block_number: u64, - _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn get_execution_info( - &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfo>

source§

fn get_execution_info_v2( - &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfoV2>

source§

fn deploy( - &mut self, - _class_hash: Felt, - _contract_address_salt: Felt, - _calldata: &[Felt], - _deploy_from_zero: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<(Felt, Vec<Felt>)>

source§

fn replace_class( - &mut self, - _class_hash: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn library_call( - &mut self, - _class_hash: Felt, - _function_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn call_contract( - &mut self, - _address: Felt, - _entry_point_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn storage_read( - &mut self, - _address_domain: u32, - _address: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn storage_write( - &mut self, - _address_domain: u32, - _address: Felt, - _value: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn emit_event( - &mut self, - _keys: &[Felt], - _data: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn send_message_to_l1( - &mut self, - _to_address: Felt, - _payload: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256>

source§

fn secp256k1_new( - &mut self, - x: U256, - y: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_add( - &mut self, - p0: Secp256k1Point, - p1: Secp256k1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_mul( - &mut self, - p: Secp256k1Point, - m: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_get_point_from_x( - &mut self, - x: U256, - y_parity: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_get_xy( - &mut self, - p: Secp256k1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn secp256r1_new( - &mut self, - x: U256, - y: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_add( - &mut self, - p0: Secp256r1Point, - p1: Secp256r1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_mul( - &mut self, - p: Secp256r1Point, - m: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_get_point_from_x( - &mut self, - x: U256, - y_parity: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_get_xy( - &mut self, - p: Secp256r1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn cheatcode(&mut self, _selector: Felt, _input: &[Felt]) -> Vec<Felt>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +ContractLogs in cairo_native::starknet_stub - Rust

Struct cairo_native::starknet_stub::ContractLogs

source ·
pub struct ContractLogs {
+    pub events: VecDeque<StubEvent>,
+    pub l2_to_l1_messages: VecDeque<(Felt, Vec<Felt>)>,
+}

Fields§

§events: VecDeque<StubEvent>§l2_to_l1_messages: VecDeque<(Felt, Vec<Felt>)>

Trait Implementations§

source§

impl Clone for ContractLogs

source§

fn clone(&self) -> ContractLogs

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ContractLogs

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ContractLogs

source§

fn default() -> ContractLogs

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where - Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where + Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<T> DynClone for T
where + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where @@ -204,7 +106,8 @@ builds.

§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release -builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where +builds.

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T
where diff --git a/cairo_native_run/utils/test/struct.TestSyscallHandler.html b/cairo_native/starknet_stub/struct.StubEvent.html similarity index 63% rename from cairo_native_run/utils/test/struct.TestSyscallHandler.html rename to cairo_native/starknet_stub/struct.StubEvent.html index 986038673..0208e67ab 100644 --- a/cairo_native_run/utils/test/struct.TestSyscallHandler.html +++ b/cairo_native/starknet_stub/struct.StubEvent.html @@ -1,110 +1,13 @@ -TestSyscallHandler in cairo_native_run::utils::test - Rust

Struct cairo_native_run::utils::test::TestSyscallHandler

source ·
pub struct TestSyscallHandler;

Trait Implementations§

source§

impl StarknetSyscallHandler for TestSyscallHandler

source§

fn get_block_hash( - &mut self, - _block_number: u64, - _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn get_execution_info( - &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfo>

source§

fn get_execution_info_v2( - &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfoV2>

source§

fn deploy( - &mut self, - _class_hash: Felt, - _contract_address_salt: Felt, - _calldata: &[Felt], - _deploy_from_zero: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<(Felt, Vec<Felt>)>

source§

fn replace_class( - &mut self, - _class_hash: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn library_call( - &mut self, - _class_hash: Felt, - _function_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn call_contract( - &mut self, - _address: Felt, - _entry_point_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn storage_read( - &mut self, - _address_domain: u32, - _address: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn storage_write( - &mut self, - _address_domain: u32, - _address: Felt, - _value: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn emit_event( - &mut self, - _keys: &[Felt], - _data: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn send_message_to_l1( - &mut self, - _to_address: Felt, - _payload: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256>

source§

fn secp256k1_new( - &mut self, - x: U256, - y: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_add( - &mut self, - p0: Secp256k1Point, - p1: Secp256k1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_mul( - &mut self, - p: Secp256k1Point, - m: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_get_point_from_x( - &mut self, - x: U256, - y_parity: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_get_xy( - &mut self, - p: Secp256k1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn secp256r1_new( - &mut self, - x: U256, - y: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_add( - &mut self, - p0: Secp256r1Point, - p1: Secp256r1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_mul( - &mut self, - p: Secp256r1Point, - m: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_get_point_from_x( - &mut self, - x: U256, - y_parity: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_get_xy( - &mut self, - p: Secp256r1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn cheatcode(&mut self, _selector: Felt, _input: &[Felt]) -> Vec<Felt>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +StubEvent in cairo_native::starknet_stub - Rust

Struct cairo_native::starknet_stub::StubEvent

source ·
pub struct StubEvent {
+    pub keys: Vec<Felt>,
+    pub data: Vec<Felt>,
+}
Expand description

Event emitted by the emit_event syscall.

+

Fields§

§keys: Vec<Felt>§data: Vec<Felt>

Trait Implementations§

source§

impl Clone for StubEvent

source§

fn clone(&self) -> StubEvent

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for StubEvent

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where - Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where + Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<T> DynClone for T
where + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where @@ -204,7 +107,8 @@ builds.

§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release -builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where +builds.

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T
where diff --git a/scarb_native_test/utils/test/struct.TestSyscallHandler.html b/cairo_native/starknet_stub/struct.StubSyscallHandler.html similarity index 58% rename from scarb_native_test/utils/test/struct.TestSyscallHandler.html rename to cairo_native/starknet_stub/struct.StubSyscallHandler.html index 3e58838f6..57f74fbf4 100644 --- a/scarb_native_test/utils/test/struct.TestSyscallHandler.html +++ b/cairo_native/starknet_stub/struct.StubSyscallHandler.html @@ -1,110 +1,118 @@ -TestSyscallHandler in scarb_native_test::utils::test - Rust

Struct scarb_native_test::utils::test::TestSyscallHandler

source ·
pub struct TestSyscallHandler;

Trait Implementations§

source§

impl StarknetSyscallHandler for TestSyscallHandler

source§

fn get_block_hash( +StubSyscallHandler in cairo_native::starknet_stub - Rust

Struct cairo_native::starknet_stub::StubSyscallHandler

source ·
pub struct StubSyscallHandler {
+    pub storage: HashMap<(u32, Felt), Felt>,
+    pub events: Vec<StubEvent>,
+    pub execution_info: ExecutionInfoV2,
+    pub logs: HashMap<Felt, ContractLogs>,
+}
Expand description

A (somewhat) usable implementation of the starknet syscall handler trait.

+

Currently gas is not deducted.

+

Fields§

§storage: HashMap<(u32, Felt), Felt>§events: Vec<StubEvent>§execution_info: ExecutionInfoV2§logs: HashMap<Felt, ContractLogs>

Trait Implementations§

source§

impl Clone for StubSyscallHandler

source§

fn clone(&self) -> StubSyscallHandler

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for StubSyscallHandler

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for StubSyscallHandler

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl StarknetSyscallHandler for &mut StubSyscallHandler

source§

fn get_block_hash( &mut self, - _block_number: u64, - _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn get_execution_info( + block_number: u64, + remaining_gas: &mut u128 +) -> SyscallResult<Felt>

source§

fn get_execution_info( &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfo>

source§

fn get_execution_info_v2( + remaining_gas: &mut u128 +) -> SyscallResult<ExecutionInfo>

source§

fn get_execution_info_v2( &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfoV2>

source§

fn deploy( + remaining_gas: &mut u128 +) -> SyscallResult<ExecutionInfoV2>

source§

fn deploy( &mut self, - _class_hash: Felt, - _contract_address_salt: Felt, - _calldata: &[Felt], - _deploy_from_zero: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<(Felt, Vec<Felt>)>

source§

fn replace_class( + class_hash: Felt, + contract_address_salt: Felt, + calldata: &[Felt], + deploy_from_zero: bool, + remaining_gas: &mut u128 +) -> SyscallResult<(Felt, Vec<Felt>)>

source§

fn replace_class( &mut self, - _class_hash: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn library_call( + class_hash: Felt, + remaining_gas: &mut u128 +) -> SyscallResult<()>

source§

fn library_call( &mut self, - _class_hash: Felt, - _function_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn call_contract( + class_hash: Felt, + function_selector: Felt, + calldata: &[Felt], + remaining_gas: &mut u128 +) -> SyscallResult<Vec<Felt>>

source§

fn call_contract( &mut self, - _address: Felt, - _entry_point_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn storage_read( + address: Felt, + entry_point_selector: Felt, + calldata: &[Felt], + remaining_gas: &mut u128 +) -> SyscallResult<Vec<Felt>>

source§

fn storage_read( &mut self, - _address_domain: u32, - _address: Felt, + address_domain: u32, + address: Felt, _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn storage_write( +) -> SyscallResult<Felt>

source§

fn storage_write( &mut self, - _address_domain: u32, - _address: Felt, - _value: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn emit_event( + address_domain: u32, + address: Felt, + value: Felt, + remaining_gas: &mut u128 +) -> SyscallResult<()>

source§

fn emit_event( &mut self, - _keys: &[Felt], - _data: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn send_message_to_l1( + keys: &[Felt], + data: &[Felt], + remaining_gas: &mut u128 +) -> SyscallResult<()>

source§

fn send_message_to_l1( &mut self, - _to_address: Felt, - _payload: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256>

source§

fn secp256k1_new( + to_address: Felt, + payload: &[Felt], + remaining_gas: &mut u128 +) -> SyscallResult<()>

source§

fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256>

source§

fn secp256k1_new( &mut self, - x: U256, - y: U256, + x: U256, + y: U256, _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_add( +) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_add( &mut self, - p0: Secp256k1Point, - p1: Secp256k1Point, + p0: Secp256k1Point, + p1: Secp256k1Point, _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_mul( +) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_mul( &mut self, - p: Secp256k1Point, - m: U256, + p: Secp256k1Point, + m: U256, _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_get_point_from_x( +) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_get_point_from_x( &mut self, - x: U256, + x: U256, y_parity: bool, _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_get_xy( +) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_get_xy( &mut self, - p: Secp256k1Point, + p: Secp256k1Point, _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn secp256r1_new( +) -> SyscallResult<(U256, U256)>

source§

fn secp256r1_new( &mut self, - x: U256, - y: U256, + x: U256, + y: U256, _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_add( +) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_add( &mut self, - p0: Secp256r1Point, - p1: Secp256r1Point, + p0: Secp256r1Point, + p1: Secp256r1Point, _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_mul( +) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_mul( &mut self, - p: Secp256r1Point, - m: U256, + p: Secp256r1Point, + m: U256, _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_get_point_from_x( +) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_get_point_from_x( &mut self, - x: U256, + x: U256, y_parity: bool, _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_get_xy( +) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_get_xy( &mut self, - p: Secp256r1Point, + p: Secp256r1Point, _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn cheatcode(&mut self, _selector: Felt, _input: &[Felt]) -> Vec<Felt>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +) -> SyscallResult<(U256, U256)>

source§

fn cheatcode(&mut self, selector: Felt, input: &[Felt]) -> Vec<Felt>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where - Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where + Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<T> DynClone for T
where + T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where @@ -204,7 +212,8 @@ builds.

§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release -builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where +builds.

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T
where diff --git a/cairo_native/utils/index.html b/cairo_native/utils/index.html index 2ab8e2cc9..d6764dfc7 100644 --- a/cairo_native/utils/index.html +++ b/cairo_native/utils/index.html @@ -1 +1 @@ -cairo_native::utils - Rust

Module cairo_native::utils

source ·
Expand description

§Various utilities

Structs§

Constants§

Traits§

Functions§

\ No newline at end of file +cairo_native::utils - Rust

Module cairo_native::utils

source ·
Expand description

§Various utilities

Structs§

Constants§

Traits§

Functions§

\ No newline at end of file diff --git a/cairo_native_run/all.html b/cairo_native_run/all.html index 7d9f8a969..d61f369b7 100644 --- a/cairo_native_run/all.html +++ b/cairo_native_run/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/cairo_native_run/utils/test/enum.TestStatus.html b/cairo_native_run/utils/test/enum.TestStatus.html index 46cad62ff..9b8645384 100644 --- a/cairo_native_run/utils/test/enum.TestStatus.html +++ b/cairo_native_run/utils/test/enum.TestStatus.html @@ -1,4 +1,4 @@ -TestStatus in cairo_native_run::utils::test - Rust

Enum cairo_native_run::utils::test::TestStatus

source ·
enum TestStatus {
+TestStatus in cairo_native_run::utils::test - Rust

Enum cairo_native_run::utils::test::TestStatus

source ·
enum TestStatus {
     Success,
     Fail(RunResultValue),
 }
Expand description

The status of a ran test.

diff --git a/cairo_native_run/utils/test/fn.display_tests_summary.html b/cairo_native_run/utils/test/fn.display_tests_summary.html index aee9d4b83..0cea36e99 100644 --- a/cairo_native_run/utils/test/fn.display_tests_summary.html +++ b/cairo_native_run/utils/test/fn.display_tests_summary.html @@ -1,2 +1,2 @@ -display_tests_summary in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

+display_tests_summary in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

\ No newline at end of file diff --git a/cairo_native_run/utils/test/fn.filter_test_cases.html b/cairo_native_run/utils/test/fn.filter_test_cases.html index 92edc5882..ccec69ee7 100644 --- a/cairo_native_run/utils/test/fn.filter_test_cases.html +++ b/cairo_native_run/utils/test/fn.filter_test_cases.html @@ -1,4 +1,4 @@ -filter_test_cases in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
+filter_test_cases in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
     compiled: TestCompilation,
     include_ignored: bool,
     ignored: bool,
diff --git a/cairo_native_run/utils/test/fn.find_testable_targets.html b/cairo_native_run/utils/test/fn.find_testable_targets.html
index b37d1820d..4ab4abf71 100644
--- a/cairo_native_run/utils/test/fn.find_testable_targets.html
+++ b/cairo_native_run/utils/test/fn.find_testable_targets.html
@@ -1,2 +1,2 @@
-find_testable_targets in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

+find_testable_targets in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

\ No newline at end of file diff --git a/cairo_native_run/utils/test/fn.run_tests.html b/cairo_native_run/utils/test/fn.run_tests.html index 40b985791..09bd818a8 100644 --- a/cairo_native_run/utils/test/fn.run_tests.html +++ b/cairo_native_run/utils/test/fn.run_tests.html @@ -1,4 +1,4 @@ -run_tests in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::run_tests

source ·
pub fn run_tests(
+run_tests in cairo_native_run::utils::test - Rust

Function cairo_native_run::utils::test::run_tests

source ·
pub fn run_tests(
     named_tests: Vec<(String, TestConfig)>,
     sierra_program: Program,
     function_set_costs: OrderedHashMap<FunctionId, OrderedHashMap<CostTokenType, i32>>,
diff --git a/cairo_native_run/utils/test/index.html b/cairo_native_run/utils/test/index.html
index 9be26b0db..047c7ed00 100644
--- a/cairo_native_run/utils/test/index.html
+++ b/cairo_native_run/utils/test/index.html
@@ -1 +1 @@
-cairo_native_run::utils::test - Rust

Module cairo_native_run::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file +cairo_native_run::utils::test - Rust

Module cairo_native_run::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file diff --git a/cairo_native_run/utils/test/sidebar-items.js b/cairo_native_run/utils/test/sidebar-items.js index fdcad2502..e1dd64ad7 100644 --- a/cairo_native_run/utils/test/sidebar-items.js +++ b/cairo_native_run/utils/test/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestSyscallHandler","TestsSummary"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestsSummary"]}; \ No newline at end of file diff --git a/cairo_native_run/utils/test/struct.TestResult.html b/cairo_native_run/utils/test/struct.TestResult.html index 6ec061082..9d588fcde 100644 --- a/cairo_native_run/utils/test/struct.TestResult.html +++ b/cairo_native_run/utils/test/struct.TestResult.html @@ -1,4 +1,4 @@ -TestResult in cairo_native_run::utils::test - Rust

Struct cairo_native_run::utils::test::TestResult

source ·
struct TestResult {
+TestResult in cairo_native_run::utils::test - Rust

Struct cairo_native_run::utils::test::TestResult

source ·
struct TestResult {
     status: TestStatus,
     gas_usage: Option<i64>,
 }
Expand description

The result of a ran test.

diff --git a/cairo_native_run/utils/test/struct.TestsSummary.html b/cairo_native_run/utils/test/struct.TestsSummary.html index e8cee433f..c39e8f474 100644 --- a/cairo_native_run/utils/test/struct.TestsSummary.html +++ b/cairo_native_run/utils/test/struct.TestsSummary.html @@ -1,4 +1,4 @@ -TestsSummary in cairo_native_run::utils::test - Rust

Struct cairo_native_run::utils::test::TestsSummary

source ·
pub struct TestsSummary {
+TestsSummary in cairo_native_run::utils::test - Rust

Struct cairo_native_run::utils::test::TestsSummary

source ·
pub struct TestsSummary {
     pub passed: Vec<String>,
     pub failed: Vec<String>,
     pub ignored: Vec<String>,
diff --git a/cairo_native_test/all.html b/cairo_native_test/all.html
index a01aaafca..0a3234296 100644
--- a/cairo_native_test/all.html
+++ b/cairo_native_test/all.html
@@ -1 +1 @@
-List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/cairo_native_test/utils/test/enum.TestStatus.html b/cairo_native_test/utils/test/enum.TestStatus.html index ef89ba092..28d63dba2 100644 --- a/cairo_native_test/utils/test/enum.TestStatus.html +++ b/cairo_native_test/utils/test/enum.TestStatus.html @@ -1,4 +1,4 @@ -TestStatus in cairo_native_test::utils::test - Rust

Enum cairo_native_test::utils::test::TestStatus

source ·
enum TestStatus {
+TestStatus in cairo_native_test::utils::test - Rust

Enum cairo_native_test::utils::test::TestStatus

source ·
enum TestStatus {
     Success,
     Fail(RunResultValue),
 }
Expand description

The status of a ran test.

diff --git a/cairo_native_test/utils/test/fn.display_tests_summary.html b/cairo_native_test/utils/test/fn.display_tests_summary.html index d0032d8ae..e5924768b 100644 --- a/cairo_native_test/utils/test/fn.display_tests_summary.html +++ b/cairo_native_test/utils/test/fn.display_tests_summary.html @@ -1,2 +1,2 @@ -display_tests_summary in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

+display_tests_summary in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

\ No newline at end of file diff --git a/cairo_native_test/utils/test/fn.filter_test_cases.html b/cairo_native_test/utils/test/fn.filter_test_cases.html index dd9b5f6a1..006755887 100644 --- a/cairo_native_test/utils/test/fn.filter_test_cases.html +++ b/cairo_native_test/utils/test/fn.filter_test_cases.html @@ -1,4 +1,4 @@ -filter_test_cases in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
+filter_test_cases in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
     compiled: TestCompilation,
     include_ignored: bool,
     ignored: bool,
diff --git a/cairo_native_test/utils/test/fn.find_testable_targets.html b/cairo_native_test/utils/test/fn.find_testable_targets.html
index df031f2a0..99c1b31ce 100644
--- a/cairo_native_test/utils/test/fn.find_testable_targets.html
+++ b/cairo_native_test/utils/test/fn.find_testable_targets.html
@@ -1,2 +1,2 @@
-find_testable_targets in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

+find_testable_targets in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

\ No newline at end of file diff --git a/cairo_native_test/utils/test/fn.run_tests.html b/cairo_native_test/utils/test/fn.run_tests.html index bdb0eaae1..aab26d89c 100644 --- a/cairo_native_test/utils/test/fn.run_tests.html +++ b/cairo_native_test/utils/test/fn.run_tests.html @@ -1,4 +1,4 @@ -run_tests in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::run_tests

source ·
pub fn run_tests(
+run_tests in cairo_native_test::utils::test - Rust

Function cairo_native_test::utils::test::run_tests

source ·
pub fn run_tests(
     named_tests: Vec<(String, TestConfig)>,
     sierra_program: Program,
     function_set_costs: OrderedHashMap<FunctionId, OrderedHashMap<CostTokenType, i32>>,
diff --git a/cairo_native_test/utils/test/index.html b/cairo_native_test/utils/test/index.html
index 4a615c496..abc5599e0 100644
--- a/cairo_native_test/utils/test/index.html
+++ b/cairo_native_test/utils/test/index.html
@@ -1 +1 @@
-cairo_native_test::utils::test - Rust

Module cairo_native_test::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file +cairo_native_test::utils::test - Rust

Module cairo_native_test::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file diff --git a/cairo_native_test/utils/test/sidebar-items.js b/cairo_native_test/utils/test/sidebar-items.js index fdcad2502..e1dd64ad7 100644 --- a/cairo_native_test/utils/test/sidebar-items.js +++ b/cairo_native_test/utils/test/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestSyscallHandler","TestsSummary"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestsSummary"]}; \ No newline at end of file diff --git a/cairo_native_test/utils/test/struct.TestResult.html b/cairo_native_test/utils/test/struct.TestResult.html index 6a2c7bd61..dc9ec5a75 100644 --- a/cairo_native_test/utils/test/struct.TestResult.html +++ b/cairo_native_test/utils/test/struct.TestResult.html @@ -1,4 +1,4 @@ -TestResult in cairo_native_test::utils::test - Rust

Struct cairo_native_test::utils::test::TestResult

source ·
struct TestResult {
+TestResult in cairo_native_test::utils::test - Rust

Struct cairo_native_test::utils::test::TestResult

source ·
struct TestResult {
     status: TestStatus,
     gas_usage: Option<i64>,
 }
Expand description

The result of a ran test.

diff --git a/cairo_native_test/utils/test/struct.TestsSummary.html b/cairo_native_test/utils/test/struct.TestsSummary.html index 687db1dea..18a0abc3e 100644 --- a/cairo_native_test/utils/test/struct.TestsSummary.html +++ b/cairo_native_test/utils/test/struct.TestsSummary.html @@ -1,4 +1,4 @@ -TestsSummary in cairo_native_test::utils::test - Rust

Struct cairo_native_test::utils::test::TestsSummary

source ·
pub struct TestsSummary {
+TestsSummary in cairo_native_test::utils::test - Rust

Struct cairo_native_test::utils::test::TestsSummary

source ·
pub struct TestsSummary {
     pub passed: Vec<String>,
     pub failed: Vec<String>,
     pub ignored: Vec<String>,
diff --git a/scarb_native_dump/all.html b/scarb_native_dump/all.html
index fc3858869..924844b27 100644
--- a/scarb_native_dump/all.html
+++ b/scarb_native_dump/all.html
@@ -1 +1 @@
-List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/scarb_native_dump/utils/test/enum.TestStatus.html b/scarb_native_dump/utils/test/enum.TestStatus.html index ad938af80..07ba473f0 100644 --- a/scarb_native_dump/utils/test/enum.TestStatus.html +++ b/scarb_native_dump/utils/test/enum.TestStatus.html @@ -1,4 +1,4 @@ -TestStatus in scarb_native_dump::utils::test - Rust

Enum scarb_native_dump::utils::test::TestStatus

source ·
enum TestStatus {
+TestStatus in scarb_native_dump::utils::test - Rust

Enum scarb_native_dump::utils::test::TestStatus

source ·
enum TestStatus {
     Success,
     Fail(RunResultValue),
 }
Expand description

The status of a ran test.

diff --git a/scarb_native_dump/utils/test/fn.display_tests_summary.html b/scarb_native_dump/utils/test/fn.display_tests_summary.html index 2928fb07f..4414b1c1a 100644 --- a/scarb_native_dump/utils/test/fn.display_tests_summary.html +++ b/scarb_native_dump/utils/test/fn.display_tests_summary.html @@ -1,2 +1,2 @@ -display_tests_summary in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

+display_tests_summary in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

\ No newline at end of file diff --git a/scarb_native_dump/utils/test/fn.filter_test_cases.html b/scarb_native_dump/utils/test/fn.filter_test_cases.html index 1856dc7c6..7910d5216 100644 --- a/scarb_native_dump/utils/test/fn.filter_test_cases.html +++ b/scarb_native_dump/utils/test/fn.filter_test_cases.html @@ -1,4 +1,4 @@ -filter_test_cases in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
+filter_test_cases in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
     compiled: TestCompilation,
     include_ignored: bool,
     ignored: bool,
diff --git a/scarb_native_dump/utils/test/fn.find_testable_targets.html b/scarb_native_dump/utils/test/fn.find_testable_targets.html
index ee62b2355..b48ce6686 100644
--- a/scarb_native_dump/utils/test/fn.find_testable_targets.html
+++ b/scarb_native_dump/utils/test/fn.find_testable_targets.html
@@ -1,2 +1,2 @@
-find_testable_targets in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

+find_testable_targets in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

\ No newline at end of file diff --git a/scarb_native_dump/utils/test/fn.run_tests.html b/scarb_native_dump/utils/test/fn.run_tests.html index 2489e289c..73981e3e2 100644 --- a/scarb_native_dump/utils/test/fn.run_tests.html +++ b/scarb_native_dump/utils/test/fn.run_tests.html @@ -1,4 +1,4 @@ -run_tests in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::run_tests

source ·
pub fn run_tests(
+run_tests in scarb_native_dump::utils::test - Rust

Function scarb_native_dump::utils::test::run_tests

source ·
pub fn run_tests(
     named_tests: Vec<(String, TestConfig)>,
     sierra_program: Program,
     function_set_costs: OrderedHashMap<FunctionId, OrderedHashMap<CostTokenType, i32>>,
diff --git a/scarb_native_dump/utils/test/index.html b/scarb_native_dump/utils/test/index.html
index 0f4d833fd..5431d2f65 100644
--- a/scarb_native_dump/utils/test/index.html
+++ b/scarb_native_dump/utils/test/index.html
@@ -1 +1 @@
-scarb_native_dump::utils::test - Rust

Module scarb_native_dump::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file +scarb_native_dump::utils::test - Rust

Module scarb_native_dump::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file diff --git a/scarb_native_dump/utils/test/sidebar-items.js b/scarb_native_dump/utils/test/sidebar-items.js index fdcad2502..e1dd64ad7 100644 --- a/scarb_native_dump/utils/test/sidebar-items.js +++ b/scarb_native_dump/utils/test/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestSyscallHandler","TestsSummary"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestsSummary"]}; \ No newline at end of file diff --git a/scarb_native_dump/utils/test/struct.TestResult.html b/scarb_native_dump/utils/test/struct.TestResult.html index 546803608..6b31ebaa1 100644 --- a/scarb_native_dump/utils/test/struct.TestResult.html +++ b/scarb_native_dump/utils/test/struct.TestResult.html @@ -1,4 +1,4 @@ -TestResult in scarb_native_dump::utils::test - Rust

Struct scarb_native_dump::utils::test::TestResult

source ·
struct TestResult {
+TestResult in scarb_native_dump::utils::test - Rust

Struct scarb_native_dump::utils::test::TestResult

source ·
struct TestResult {
     status: TestStatus,
     gas_usage: Option<i64>,
 }
Expand description

The result of a ran test.

diff --git a/scarb_native_dump/utils/test/struct.TestSyscallHandler.html b/scarb_native_dump/utils/test/struct.TestSyscallHandler.html deleted file mode 100644 index 0d67164a8..000000000 --- a/scarb_native_dump/utils/test/struct.TestSyscallHandler.html +++ /dev/null @@ -1,216 +0,0 @@ -TestSyscallHandler in scarb_native_dump::utils::test - Rust

Struct scarb_native_dump::utils::test::TestSyscallHandler

source ·
pub struct TestSyscallHandler;

Trait Implementations§

source§

impl StarknetSyscallHandler for TestSyscallHandler

source§

fn get_block_hash( - &mut self, - _block_number: u64, - _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn get_execution_info( - &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfo>

source§

fn get_execution_info_v2( - &mut self, - _remaining_gas: &mut u128 -) -> SyscallResult<ExecutionInfoV2>

source§

fn deploy( - &mut self, - _class_hash: Felt, - _contract_address_salt: Felt, - _calldata: &[Felt], - _deploy_from_zero: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<(Felt, Vec<Felt>)>

source§

fn replace_class( - &mut self, - _class_hash: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn library_call( - &mut self, - _class_hash: Felt, - _function_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn call_contract( - &mut self, - _address: Felt, - _entry_point_selector: Felt, - _calldata: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<Vec<Felt>>

source§

fn storage_read( - &mut self, - _address_domain: u32, - _address: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<Felt>

source§

fn storage_write( - &mut self, - _address_domain: u32, - _address: Felt, - _value: Felt, - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn emit_event( - &mut self, - _keys: &[Felt], - _data: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn send_message_to_l1( - &mut self, - _to_address: Felt, - _payload: &[Felt], - _remaining_gas: &mut u128 -) -> SyscallResult<()>

source§

fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256>

source§

fn secp256k1_new( - &mut self, - x: U256, - y: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_add( - &mut self, - p0: Secp256k1Point, - p1: Secp256k1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_mul( - &mut self, - p: Secp256k1Point, - m: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256k1Point>

source§

fn secp256k1_get_point_from_x( - &mut self, - x: U256, - y_parity: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256k1Point>>

source§

fn secp256k1_get_xy( - &mut self, - p: Secp256k1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn secp256r1_new( - &mut self, - x: U256, - y: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_add( - &mut self, - p0: Secp256r1Point, - p1: Secp256r1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_mul( - &mut self, - p: Secp256r1Point, - m: U256, - _remaining_gas: &mut u128 -) -> SyscallResult<Secp256r1Point>

source§

fn secp256r1_get_point_from_x( - &mut self, - x: U256, - y_parity: bool, - _remaining_gas: &mut u128 -) -> SyscallResult<Option<Secp256r1Point>>

source§

fn secp256r1_get_xy( - &mut self, - p: Secp256r1Point, - _remaining_gas: &mut u128 -) -> SyscallResult<(U256, U256)>

source§

fn cheatcode(&mut self, _selector: Felt, _input: &[Felt]) -> Vec<Felt>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where - Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where - Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where - Self: Display,

Causes self to use its Display implementation when -Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where - Self: LowerExp,

Causes self to use its LowerExp implementation when -Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where - Self: LowerHex,

Causes self to use its LowerHex implementation when -Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where - Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where - Self: Pointer,

Causes self to use its Pointer implementation when -Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where - Self: UpperExp,

Causes self to use its UpperExp implementation when -Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where - Self: UpperHex,

Causes self to use its UpperHex implementation when -Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where - &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an -Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> -if into_left is true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where - F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> -if into_left(&self) returns true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
§

impl<T> Pipe for T
where - T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where - Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where - R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where - R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where - Self: Borrow<B>, - B: 'a + ?Sized, - R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( - &'a mut self, - func: impl FnOnce(&'a mut B) -> R -) -> R
where - Self: BorrowMut<B>, - B: 'a + ?Sized, - R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe -function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where - Self: AsRef<U>, - U: 'a + ?Sized, - R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where - Self: AsMut<U>, - U: 'a + ?Sized, - R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe -function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where - Self: Deref<Target = T>, - T: 'a + ?Sized, - R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( - &'a mut self, - func: impl FnOnce(&'a mut T) -> R -) -> R
where - Self: DerefMut<Target = T> + Deref, - T: 'a + ?Sized, - R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe -function.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T0, T1, E, TRewriter> SemanticRewriter<(T0, T1), E> for TRewriter
where - TRewriter: SemanticRewriter<T0, E> + SemanticRewriter<T1, E>,

§

fn rewrite(&mut self, value: (T0, T1)) -> Result<(T0, T1), E>

§

impl<T, E, TRewriter> SemanticRewriter<Box<T>, E> for TRewriter
where - T: Clone, - TRewriter: SemanticRewriter<T, E>,

§

fn rewrite(&mut self, value: Box<T>) -> Result<Box<T>, E>

§

impl<K, V, E, TRewriter> SemanticRewriter<HashMap<K, V>, E> for TRewriter
where - K: Eq + Hash, - TRewriter: SemanticRewriter<K, E> + SemanticRewriter<V, E>,

§

fn rewrite(&mut self, value: HashMap<K, V>) -> Result<HashMap<K, V>, E>

§

impl<T, E, TRewriter> SemanticRewriter<Option<T>, E> for TRewriter
where - TRewriter: SemanticRewriter<T, E>,

§

fn rewrite(&mut self, value: Option<T>) -> Result<Option<T>, E>

§

impl<T, E, TRewriter, E2> SemanticRewriter<Result<T, E2>, E> for TRewriter
where - TRewriter: SemanticRewriter<T, E>,

§

fn rewrite(&mut self, value: Result<T, E2>) -> Result<Result<T, E2>, E>

§

impl<T, E, TRewriter> SemanticRewriter<Vec<T>, E> for TRewriter
where - TRewriter: SemanticRewriter<T, E>,

§

fn rewrite(&mut self, value: Vec<T>) -> Result<Vec<T>, E>

§

impl<T, E, TRewriter> SemanticRewriter<VecDeque<T>, E> for TRewriter
where - TRewriter: SemanticRewriter<T, E>,

§

fn rewrite(&mut self, value: VecDeque<T>) -> Result<VecDeque<T>, E>

§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where - Self: Borrow<B>, - B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where - Self: BorrowMut<B>, - B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where - Self: AsRef<R>, - R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where - Self: AsMut<R>, - R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where - Self: Deref<Target = T>, - T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where - Self: DerefMut<Target = T> + Deref, - T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release -builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where - Self: Borrow<B>, - B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release -builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where - Self: BorrowMut<B>, - B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release -builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where - Self: AsRef<R>, - R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release -builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where - Self: AsMut<R>, - R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release -builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where - Self: Deref<Target = T>, - T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release -builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where - Self: DerefMut<Target = T> + Deref, - T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release -builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where - Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T
where - T: ?Sized,

§

fn upcast(&self) -> &T

§

impl<T> UpcastMut<T> for T
where - T: ?Sized,

§

fn upcast_mut(&mut self) -> &mut T

§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where - S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/scarb_native_dump/utils/test/struct.TestsSummary.html b/scarb_native_dump/utils/test/struct.TestsSummary.html index 9ff566c59..c8ca629b9 100644 --- a/scarb_native_dump/utils/test/struct.TestsSummary.html +++ b/scarb_native_dump/utils/test/struct.TestsSummary.html @@ -1,4 +1,4 @@ -TestsSummary in scarb_native_dump::utils::test - Rust

Struct scarb_native_dump::utils::test::TestsSummary

source ·
pub struct TestsSummary {
+TestsSummary in scarb_native_dump::utils::test - Rust

Struct scarb_native_dump::utils::test::TestsSummary

source ·
pub struct TestsSummary {
     pub passed: Vec<String>,
     pub failed: Vec<String>,
     pub ignored: Vec<String>,
diff --git a/scarb_native_test/all.html b/scarb_native_test/all.html
index 37cba02c2..19ea0b7dd 100644
--- a/scarb_native_test/all.html
+++ b/scarb_native_test/all.html
@@ -1 +1 @@
-List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/scarb_native_test/utils/test/enum.TestStatus.html b/scarb_native_test/utils/test/enum.TestStatus.html index f02f987ed..b4ec4253b 100644 --- a/scarb_native_test/utils/test/enum.TestStatus.html +++ b/scarb_native_test/utils/test/enum.TestStatus.html @@ -1,4 +1,4 @@ -TestStatus in scarb_native_test::utils::test - Rust

Enum scarb_native_test::utils::test::TestStatus

source ·
enum TestStatus {
+TestStatus in scarb_native_test::utils::test - Rust

Enum scarb_native_test::utils::test::TestStatus

source ·
enum TestStatus {
     Success,
     Fail(RunResultValue),
 }
Expand description

The status of a ran test.

diff --git a/scarb_native_test/utils/test/fn.display_tests_summary.html b/scarb_native_test/utils/test/fn.display_tests_summary.html index 96f12cd02..0b55326cb 100644 --- a/scarb_native_test/utils/test/fn.display_tests_summary.html +++ b/scarb_native_test/utils/test/fn.display_tests_summary.html @@ -1,2 +1,2 @@ -display_tests_summary in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

+display_tests_summary in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::display_tests_summary

source ·
pub fn display_tests_summary(summary: &TestsSummary, filtered_out: usize)
Expand description

Display the summary of the ran tests.

\ No newline at end of file diff --git a/scarb_native_test/utils/test/fn.filter_test_cases.html b/scarb_native_test/utils/test/fn.filter_test_cases.html index c9298ea84..ea5e10ecd 100644 --- a/scarb_native_test/utils/test/fn.filter_test_cases.html +++ b/scarb_native_test/utils/test/fn.filter_test_cases.html @@ -1,4 +1,4 @@ -filter_test_cases in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
+filter_test_cases in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::filter_test_cases

source ·
pub fn filter_test_cases(
     compiled: TestCompilation,
     include_ignored: bool,
     ignored: bool,
diff --git a/scarb_native_test/utils/test/fn.find_testable_targets.html b/scarb_native_test/utils/test/fn.find_testable_targets.html
index 79e2913ab..86f563fa5 100644
--- a/scarb_native_test/utils/test/fn.find_testable_targets.html
+++ b/scarb_native_test/utils/test/fn.find_testable_targets.html
@@ -1,2 +1,2 @@
-find_testable_targets in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

+find_testable_targets in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::find_testable_targets

source ·
pub fn find_testable_targets(package: &PackageMetadata) -> Vec<&TargetMetadata>
Expand description

Find all testable targets in the Scarb package.

\ No newline at end of file diff --git a/scarb_native_test/utils/test/fn.run_tests.html b/scarb_native_test/utils/test/fn.run_tests.html index f6aaef99f..aaafd003b 100644 --- a/scarb_native_test/utils/test/fn.run_tests.html +++ b/scarb_native_test/utils/test/fn.run_tests.html @@ -1,4 +1,4 @@ -run_tests in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::run_tests

source ·
pub fn run_tests(
+run_tests in scarb_native_test::utils::test - Rust

Function scarb_native_test::utils::test::run_tests

source ·
pub fn run_tests(
     named_tests: Vec<(String, TestConfig)>,
     sierra_program: Program,
     function_set_costs: OrderedHashMap<FunctionId, OrderedHashMap<CostTokenType, i32>>,
diff --git a/scarb_native_test/utils/test/index.html b/scarb_native_test/utils/test/index.html
index f77a3e2bf..ea2bd3a76 100644
--- a/scarb_native_test/utils/test/index.html
+++ b/scarb_native_test/utils/test/index.html
@@ -1 +1 @@
-scarb_native_test::utils::test - Rust

Module scarb_native_test::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file +scarb_native_test::utils::test - Rust

Module scarb_native_test::utils::test

source ·

Structs§

Enums§

Functions§

\ No newline at end of file diff --git a/scarb_native_test/utils/test/sidebar-items.js b/scarb_native_test/utils/test/sidebar-items.js index fdcad2502..e1dd64ad7 100644 --- a/scarb_native_test/utils/test/sidebar-items.js +++ b/scarb_native_test/utils/test/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestSyscallHandler","TestsSummary"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["TestStatus"],"fn":["display_tests_summary","filter_test_cases","find_testable_targets","run_tests"],"struct":["TestResult","TestsSummary"]}; \ No newline at end of file diff --git a/scarb_native_test/utils/test/struct.TestResult.html b/scarb_native_test/utils/test/struct.TestResult.html index 40f617d2a..be5f1e860 100644 --- a/scarb_native_test/utils/test/struct.TestResult.html +++ b/scarb_native_test/utils/test/struct.TestResult.html @@ -1,4 +1,4 @@ -TestResult in scarb_native_test::utils::test - Rust

Struct scarb_native_test::utils::test::TestResult

source ·
struct TestResult {
+TestResult in scarb_native_test::utils::test - Rust

Struct scarb_native_test::utils::test::TestResult

source ·
struct TestResult {
     status: TestStatus,
     gas_usage: Option<i64>,
 }
Expand description

The result of a ran test.

diff --git a/scarb_native_test/utils/test/struct.TestsSummary.html b/scarb_native_test/utils/test/struct.TestsSummary.html index c59b8d68c..2e4fb041a 100644 --- a/scarb_native_test/utils/test/struct.TestsSummary.html +++ b/scarb_native_test/utils/test/struct.TestsSummary.html @@ -1,4 +1,4 @@ -TestsSummary in scarb_native_test::utils::test - Rust

Struct scarb_native_test::utils::test::TestsSummary

source ·
pub struct TestsSummary {
+TestsSummary in scarb_native_test::utils::test - Rust

Struct scarb_native_test::utils::test::TestsSummary

source ·
pub struct TestsSummary {
     pub passed: Vec<String>,
     pub failed: Vec<String>,
     pub ignored: Vec<String>,
diff --git a/search-index.js b/search-index.js
index de31db85b..a799184d8 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,13 +1,13 @@
 var searchIndex = new Map(JSON.parse('[\
-["cairo_native",{"t":"PPFPPGNNNNNNCNNNNNNHCCNNNNNNNCCCNNNNNNNNNNCCCHHNNNNNNNNNNNNNNNCNNNNNNNNNNCNNNNCCNNPEPEGCNNNNNNNCNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNOONNOONNNNNNNNNNNNNNOONNNNNNOONNNNNNNNPPPPGPPPPPPPPPPPPPIPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFNNNONNNNNNONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNPFFPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGRPKFPNCNCCCNNNNCNCMCCNNNCCCNCCCCCCCNNNCCHNNNMCCCCNNNNNNNNNNNNNNCCCCCCCCNNNNNNNNCCCCCCCCCNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFNNCNCNNCNNNNNNCCNNNNNNNNCCCNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIFNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONMNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNMNMNMNNNNNNNNNNONNNNNNNNNNNNMNMNOOOOOOOONNNNNNNOOMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNOOOMNMNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOOOORKFNCNCNNCCMMMCCNNCNCCCCNNNNNNCCCMNNCNMNMMMMMMNCCCCCNNNNNNNCNCCCCNNNNCCCCCCCNNMNHHHHHHHHHHIHHHFFNNNNHNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHFKSNNNMMHHNNHHNNNNNNHHHHHHNNNHHNHHHHHNNNNNNNHNNNNNNNNNPPPPPPPPGPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOO","n":["Aggressive","Default","LLVMCompileError","Less","None","OptLevel","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","cache","clone","clone","clone_into","clone_into","cmp","compare","compile","context","debug_info","default","eq","equivalent","equivalent","equivalent","equivalent","equivalent","error","execution_result","executor","fmt","fmt","fmt","from","from","from","from","hash","into","into","libfuncs","metadata","module","module_to_object","object_to_shared_lib","partial_cmp","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","starknet","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_into","try_into","type_id","type_id","types","upcast","upcast","upcast_mut","upcast_mut","utils","values","vzip","vzip","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","borrow","borrow_mut","fmt","from","from","from","into","jit","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","AotProgramCache","borrow","borrow_mut","compile_and_insert","fmt","from","get","into","new","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","JitProgramCache","borrow","borrow_mut","compile_and_insert","context","fmt","from","get","into","new","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeContext","borrow","borrow_mut","compile","compile_with_metadata","context","default","eq","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","from","initialize_mlir","into","new","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","DebugInfo","DebugLocations","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","extract","extract","fmt","fmt","from","from","funcs","funcs","into","into","libfunc_declarations","libfunc_declarations","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","statements","statements","to_owned","to_owned","try_from","try_from","try_into","try_into","type_declarations","type_declarations","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","Cast","ConstDataMismatch","EditStateError","Err","Error","Error","GasMetadataError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","borrow","borrow","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","make_missing_parameter","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","source","to_smolstr","to_smolstr","to_string","to_string","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","ranges","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","__clone_box","__clone_box","bitwise","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builtin_stats","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","default","default","deserialize","deserialize","deserialize","ec_op","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_msg","failure_flag","fmt","fmt","fmt","from","from","from","from_execution_result","hash","hash","into","into","into","partial_cmp","partial_cmp","pedersen","poseidon","range_check","remaining_gas","remaining_gas","return_value","return_values","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","segment_arena","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","Aot","AotNativeExecutor","ArgumentMapper","Jit","JitNativeExecutor","NativeExecutor","__clone_box","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","find_function_ptr","find_function_ptr","fmt","fmt","fmt","from","from","from","from","from","from","from_native_module","from_native_module","into","into","into","into","invoke_contract_dynamic","invoke_contract_dynamic","invoke_contract_dynamic","invoke_data","invoke_dynamic","invoke_dynamic","invoke_dynamic","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","module","new","new","program_registry","push","push_aligned","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip","BranchTarget","Error","Jump","LibfuncBuilder","LibfuncHelper","Return","__clone_box","ap_tracking","append_block","array","bitwise","bool","borrow","borrow","borrow_mut","borrow_mut","box","br","branch_align","build","bytes31","cast","clone","clone_into","cond_br","const","coupon","debug","deref","drop","dup","ec","enum","felt252","felt252_dict","felt252_dict_entry","fmt","from","from","function_call","gas","increment_builtin_counter","init_block","into","into","is_function_call","mem","nullable","pedersen","poseidon","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","sint128","sint16","sint32","sint64","sint8","snapshot_take","starknet","struct","switch","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uint128","uint16","uint256","uint32","uint512","uint64","uint8","unconditional_jump","unwrap_non_zero","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build_disable","build_enable","build_revoke","build","build_append","build_get","build_len","build_new","build_pop_front","build_pop_front_consume","build_slice","build_snapshot_pop_back","build_snapshot_pop_front","build_span_from_tuple","build","build","build_bool_not","build_bool_to_felt252","build","build_into_box","build_unbox","build","build","build_const","build_from_felt252","build_to_felt252","build","build_downcast","build_upcast","build","build_const_as_box","build_const_as_immediate","build_const_type_value","build","build_buy","build_refund","build","build_print","build","build","build","build_is_zero","build_neg","build_point_from_x","build_state_add","build_state_add_mul","build_state_finalize","build_state_init","build_try_new","build_unwrap_point","build_zero","build","build_enum_value","build_from_bounded_int","build_init","build_match","build_snapshot_match","build","build_binary_operation","build_const","build_is_zero","build","build_new","build_squash","build","build_finalize","build_get","build","build","build_builtin_withdraw_gas","build_get_available_gas","build_get_builtin_costs","build_withdraw_gas","build","build_alloc_local","build_finalize_locals","build_rename","build_store_local","build_store_temp","build","build","build_pedersen","build","build_hades_permutation","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build","build_call_contract","build_class_hash_const","build_class_hash_to_felt252","build_class_hash_try_from_felt252","build_contract_address_const","build_contract_address_to_felt252","build_contract_address_try_from_felt252","build_deploy","build_emit_event","build_get_block_hash","build_get_execution_info","build_get_execution_info_v2","build_keccak","build_library_call","build_replace_class","build_send_message_to_l1","build_storage_address_from_base","build_storage_address_from_base_and_offset","build_storage_address_to_felt252","build_storage_address_try_from_felt252","build_storage_base_address_const","build_storage_base_address_from_felt252","build_storage_read","build_storage_write","build","build_construct","build_deconstruct","build_struct_value","build","build_byte_reverse","build_const","build_divmod","build_equal","build_from_felt252","build_guarantee_mul","build_guarantee_verify","build_is_zero","build_operation","build_square_root","build_to_felt252","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod","build_is_zero","build_square_root","build_u256_guarantee_inv_mod_n","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod_u256","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build","MetadataStorage","borrow","borrow_mut","debug_utils","default","enum_snapshot_variants","fmt","from","gas","get","get_mut","get_or_insert_with","insert","into","new","prime_modulo","realloc_bindings","remove","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","runtime_bindings","snapshot_clones","tail_recursion","try_from","try_into","type_id","upcast","upcast_mut","vzip","DebugUtils","borrow","borrow_mut","breakpoint_marker","debug_breakpoint_trap","debug_print","default","dump_mem","fmt","from","into","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","register_impls","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","EnumSnapshotVariantsMeta","borrow","borrow_mut","default","from","get_variants","into","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","set_mapping","try_from","try_into","type_id","upcast","upcast_mut","vzip","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","__clone_box","__clone_box","ap_change_info","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","compare","default","default","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","function_set_costs","gas_info","get_gas_cost_for_statement","get_gas_cost_for_statement_and_cost_token_type","get_initial_available_gas","hash","initial_required_gas","into","into","into","into","linear_ap_change_solver","linear_gas_solver","new","partial_cmp","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","source","to_owned","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip","gas","PrimeModuloMeta","borrow","borrow_mut","fmt","from","into","new","prime","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","ReallocBindingsMeta","borrow","borrow_mut","fmt","free","from","into","new","realloc","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","RuntimeBindingsMeta","borrow","borrow_mut","default","dict_alloc_free","dict_alloc_new","dict_gas_refund","dict_get","dict_insert","fmt","from","into","libfunc_debug_print","libfunc_ec_point_from_x_nz","libfunc_ec_point_try_new_nz","libfunc_ec_state_add","libfunc_ec_state_add_mul","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vtable_cheatcode","vzip","CloneFn","SnapshotClonesMeta","borrow","borrow_mut","default","from","into","register","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","wrap_invoke","TailRecursionMeta","borrow","borrow_mut","depth_counter","fmt","from","into","new","recursion_target","return_target","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","set_return_target","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeModule","borrow","borrow_mut","fmt","from","get_metadata","insert_metadata","into","metadata","module","new","program_registry","remove_metadata","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","account_contract_address","account_contract_address","account_deployment_data","block_info","block_info","block_number","block_timestamp","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cairo_native__vtable_cheatcode","call_contract","call_contract","caller_address","caller_address","capacity","chain_id","chain_id","cheatcode","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","compare","compare","compare","compare","compare","compare","compare","contract_address","contract_address","default","deploy","deploy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","emit_event","emit_event","entry_point_selector","entry_point_selector","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fee_data_availability_mode","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","get_block_hash","get_block_hash","get_execution_info","get_execution_info","get_execution_info_v2","get_execution_info_v2","hash","hash","hash","hash","hash","hash","hash","hash","hash","hi","into","into","into","into","into","into","into","into","into","into","into","into","keccak","keccak","library_call","library_call","lo","max_amount","max_fee","max_fee","max_price_per_unit","nonce","nonce","nonce_data_availability_mode","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","paymaster_data","ptr","replace_class","replace_class","resource","resource_bounds","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","secp256k1_add","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_get_xy","secp256k1_mul","secp256k1_mul","secp256k1_new","secp256k1_new","secp256r1_add","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_get_xy","secp256r1_mul","secp256r1_mul","secp256r1_new","secp256r1_new","send_message_to_l1","send_message_to_l1","sequencer_address","serialize","serialize","serialize","serialize","serialize","serialize","serialize","signature","signature","since","storage_read","storage_read","storage_write","storage_write","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","transaction_hash","transaction_hash","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_info","tx_info","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","until","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","x","x","y","y","Error","TypeBuilder","WithSelf","__clone_box","array","as_ref","bitwise","borrow","borrow_mut","bounded_int","box","build","build_default","build_drop","builtin_costs","bytes31","clone","clone_into","coupon","deref","ec_op","ec_point","ec_state","enum","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252","felt252_dict","felt252_dict_entry","fields","fmt","from","gas_builtin","hash","integer_width","into","is_builtin","is_complex","is_integer_signed","is_memory_allocated","is_zst","layout","new","non_zero","nullable","pedersen","poseidon","range_check","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","segment_arena","self_ty","snapshot","squashed_felt252_dict","starknet","struct","to_owned","try_from","try_into","type_id","uint128","uint128_mul_guarantee","uint16","uint32","uint64","uint8","uninitialized","upcast","upcast_mut","variants","vzip","build","build","build","build","build","build","build","build","build","build","TypeLayout","build","get_layout_for_variants","get_type_for_variants","HALF_PRIME","PRIME","borrow","borrow","borrow_mut","borrow_mut","build","deref","deref","from","from","into","into","register_prime_modulo_meta","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build","build","build","build","build","build","build","build","build","build","build","build_class_hash","build_contract_address","build_secp256_point","build_storage_address","build_storage_base_address","build_system","build","build","build","build","build","build","build","build","LayoutError","ProgramRegistryExt","SHARED_LIBRARY_EXT","__clone_box","borrow","borrow_mut","build_type","build_type_with_layout","cairo_to_sierra","cairo_to_sierra_with_debug_info","clone","clone_into","create_engine","debug_with","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252_bigint","felt252_short_str","felt252_str","find_entry_point","find_entry_point_by_idx","find_function_id","fmt","fmt","from","generate_function_name","get_integer_layout","into","layout_repeat","next_multiple_of_u32","next_multiple_of_usize","padding_needed_for","register_runtime_symbols","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_pass_manager","to_owned","to_smolstr","to_string","try_from","try_into","type_id","upcast","upcast_mut","vzip","Array","BoundedInt","Bytes31","EcPoint","EcState","Enum","Felt252","Felt252Dict","JitValue","Null","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","__clone_box","borrow","borrow_mut","clone","clone_into","deserialize","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt_str","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","into","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","serialize","to_owned","try_from","try_into","type_id","upcast","upcast_mut","vzip","debug_name","debug_name","debug_name","fields","range","tag","value","value","value","x","x","y","y"],"q":[[0,"cairo_native"],[82,"cairo_native::cache"],[109,"cairo_native::cache::aot"],[131,"cairo_native::cache::jit"],[154,"cairo_native::context"],[185,"cairo_native::debug_info"],[241,"cairo_native::error"],[315,"cairo_native::error::SierraAssertError"],[316,"cairo_native::execution_result"],[433,"cairo_native::executor"],[536,"cairo_native::libfuncs"],[631,"cairo_native::libfuncs::ap_tracking"],[635,"cairo_native::libfuncs::array"],[646,"cairo_native::libfuncs::bitwise"],[647,"cairo_native::libfuncs::bool"],[650,"cairo_native::libfuncs::box"],[653,"cairo_native::libfuncs::branch_align"],[654,"cairo_native::libfuncs::bytes31"],[658,"cairo_native::libfuncs::cast"],[661,"cairo_native::libfuncs::const"],[665,"cairo_native::libfuncs::coupon"],[668,"cairo_native::libfuncs::debug"],[670,"cairo_native::libfuncs::drop"],[671,"cairo_native::libfuncs::dup"],[672,"cairo_native::libfuncs::ec"],[683,"cairo_native::libfuncs::enum"],[689,"cairo_native::libfuncs::felt252"],[693,"cairo_native::libfuncs::felt252_dict"],[696,"cairo_native::libfuncs::felt252_dict_entry"],[699,"cairo_native::libfuncs::function_call"],[700,"cairo_native::libfuncs::gas"],[705,"cairo_native::libfuncs::mem"],[711,"cairo_native::libfuncs::nullable"],[712,"cairo_native::libfuncs::pedersen"],[714,"cairo_native::libfuncs::poseidon"],[716,"cairo_native::libfuncs::sint128"],[724,"cairo_native::libfuncs::sint16"],[733,"cairo_native::libfuncs::sint32"],[742,"cairo_native::libfuncs::sint64"],[751,"cairo_native::libfuncs::sint8"],[760,"cairo_native::libfuncs::snapshot_take"],[761,"cairo_native::libfuncs::starknet"],[786,"cairo_native::libfuncs::struct"],[790,"cairo_native::libfuncs::uint128"],[802,"cairo_native::libfuncs::uint16"],[812,"cairo_native::libfuncs::uint256"],[817,"cairo_native::libfuncs::uint32"],[827,"cairo_native::libfuncs::uint512"],[829,"cairo_native::libfuncs::uint64"],[839,"cairo_native::libfuncs::uint8"],[849,"cairo_native::libfuncs::unconditional_jump"],[850,"cairo_native::libfuncs::unwrap_non_zero"],[851,"cairo_native::metadata"],[885,"cairo_native::metadata::debug_utils"],[917,"cairo_native::metadata::enum_snapshot_variants"],[938,"cairo_native::metadata::gas"],[1069,"cairo_native::metadata::gas::GasMetadataError"],[1070,"cairo_native::metadata::prime_modulo"],[1091,"cairo_native::metadata::realloc_bindings"],[1113,"cairo_native::metadata::runtime_bindings"],[1147,"cairo_native::metadata::snapshot_clones"],[1169,"cairo_native::metadata::tail_recursion"],[1193,"cairo_native::module"],[1219,"cairo_native::starknet"],[1682,"cairo_native::types"],[1762,"cairo_native::types::array"],[1763,"cairo_native::types::bitwise"],[1764,"cairo_native::types::bounded_int"],[1765,"cairo_native::types::box"],[1766,"cairo_native::types::builtin_costs"],[1767,"cairo_native::types::bytes31"],[1768,"cairo_native::types::coupon"],[1769,"cairo_native::types::ec_op"],[1770,"cairo_native::types::ec_point"],[1771,"cairo_native::types::ec_state"],[1772,"cairo_native::types::enum"],[1776,"cairo_native::types::felt252"],[1816,"cairo_native::types::felt252_dict"],[1817,"cairo_native::types::felt252_dict_entry"],[1818,"cairo_native::types::gas_builtin"],[1819,"cairo_native::types::non_zero"],[1820,"cairo_native::types::nullable"],[1821,"cairo_native::types::pedersen"],[1822,"cairo_native::types::poseidon"],[1823,"cairo_native::types::range_check"],[1824,"cairo_native::types::segment_arena"],[1825,"cairo_native::types::snapshot"],[1826,"cairo_native::types::squashed_felt252_dict"],[1827,"cairo_native::types::starknet"],[1834,"cairo_native::types::struct"],[1835,"cairo_native::types::uint128"],[1836,"cairo_native::types::uint128_mul_guarantee"],[1837,"cairo_native::types::uint16"],[1838,"cairo_native::types::uint32"],[1839,"cairo_native::types::uint64"],[1840,"cairo_native::types::uint8"],[1841,"cairo_native::types::uninitialized"],[1842,"cairo_native::utils"],[1896,"cairo_native::values"],[1964,"cairo_native::values::JitValue"],[1977,"dyn_clone::sealed"],[1978,"cairo_native::ffi"],[1979,"core::cmp"],[1980,"melior::context"],[1981,"melior::ir::module"],[1982,"cairo_lang_sierra::program"],[1983,"cairo_lang_sierra::extensions::core"],[1984,"cairo_lang_sierra::program_registry"],[1985,"core::option"],[1986,"core::result"],[1987,"core::fmt"],[1988,"core::hash"],[1989,"alloc::vec"],[1990,"std::path"],[1991,"std::io::error"],[1992,"std::collections::hash::map"],[1993,"alloc::boxed"],[1994,"alloc::collections::vec_deque"],[1995,"smol_str"],[1996,"alloc::string"],[1997,"core::any"],[1998,"cairo_native::executor::aot"],[1999,"alloc::rc"],[2000,"cairo_native::executor::jit"],[2001,"cairo_lang_compiler::db"],[2002,"cairo_lang_diagnostics::diagnostics"],[2003,"melior::error"],[2004,"cairo_lang_sierra::edit_state"],[2005,"core::num::error"],[2006,"core::alloc::layout"],[2007,"cairo_lang_sierra::ids"],[2008,"core::error"],[2009,"serde::de"],[2010,"serde::ser"],[2011,"core::ffi"],[2012,"starknet_types_core::felt"],[2013,"bumpalo"],[2014,"libloading::safe"],[2015,"melior::ir::block"],[2016,"melior::ir::value"],[2017,"melior::ir::location"],[2018,"melior::ir::operation"],[2019,"cairo_lang_sierra::extensions::modules::ap_tracking"],[2020,"cairo_lang_sierra::extensions::lib_func"],[2021,"cairo_lang_sierra::extensions::modules::array"],[2022,"cairo_lang_sierra::extensions::modules::boolean"],[2023,"cairo_lang_sierra::extensions::modules::boxing"],[2024,"cairo_lang_sierra::extensions::modules::bytes31"],[2025,"cairo_lang_sierra::extensions::modules::consts"],[2026,"cairo_lang_sierra::extensions::modules::casts"],[2027,"cairo_lang_sierra::extensions::modules::const_type"],[2028,"cairo_lang_sierra::extensions::modules::coupon"],[2029,"cairo_lang_sierra::extensions::modules::function_call"],[2030,"cairo_lang_sierra::extensions::modules::debug"],[2031,"cairo_lang_sierra::extensions::modules::ec"],[2032,"cairo_lang_sierra::extensions::modules::enm"],[2033,"cairo_lang_sierra::extensions::modules::felt252"],[2034,"cairo_lang_sierra::extensions::modules::felt252_dict"],[2035,"cairo_lang_sierra::extensions::modules::gas"],[2036,"cairo_lang_sierra::extensions::modules::mem"],[2037,"cairo_lang_sierra::extensions::modules::nullable"],[2038,"cairo_lang_sierra::extensions::modules::pedersen"],[2039,"cairo_lang_sierra::extensions::modules::poseidon"],[2040,"cairo_lang_sierra::extensions::modules::int::signed128"],[2041,"cairo_lang_sierra::extensions::modules::int"],[2042,"cairo_lang_sierra::extensions::modules::int::signed"],[2043,"cairo_lang_sierra::extensions::modules::starknet"],[2044,"cairo_lang_sierra::extensions::modules::structure"],[2045,"cairo_lang_sierra::extensions::modules::int::unsigned128"],[2046,"cairo_lang_sierra::extensions::modules::int::unsigned"],[2047,"cairo_lang_sierra::extensions::modules::int::unsigned256"],[2048,"cairo_lang_sierra::extensions::modules::int::unsigned512"],[2049,"core::ops::function"],[2050,"melior::execution_engine"],[2051,"cairo_lang_sierra_ap_change"],[2052,"cairo_lang_sierra_gas"],[2053,"num_bigint::biguint"],[2054,"alloc::sync"],[2055,"melior::ir::type"],[2056,"core::clone"],[2057,"cairo_lang_sierra::extensions::types"],[2058,"cairo_lang_sierra::extensions::modules::bounded_int"],[2059,"num_bigint::bigint"],[2060,"cairo_lang_sierra::extensions::modules::starknet::secp256"],[2061,"core::convert"],[2062,"alloc::borrow"],[2063,"cairo_native::compiler"]],"i":[4,4,0,4,4,0,3,4,3,4,3,4,0,3,4,3,4,4,4,0,0,0,4,4,4,4,4,4,4,0,0,0,3,3,4,3,4,4,4,4,3,4,0,0,0,0,0,4,3,3,3,3,3,3,3,4,4,4,4,4,4,4,0,3,4,3,3,3,4,3,4,3,4,0,3,4,3,4,0,0,3,4,34,0,34,0,0,0,34,34,34,34,34,34,34,0,34,34,34,34,34,34,34,34,34,34,34,34,34,0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,0,0,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,47,47,47,47,47,47,13,13,13,13,13,13,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,50,15,15,87,0,15,15,15,15,15,15,15,15,15,87,15,15,50,0,15,0,15,15,15,50,15,50,15,15,50,50,15,15,15,15,15,15,15,15,50,15,50,15,15,15,15,15,15,15,15,50,50,50,50,50,50,50,15,15,50,15,50,15,50,15,50,15,50,15,50,15,50,15,50,209,0,0,0,60,61,62,60,60,61,62,60,61,62,61,60,61,62,60,61,62,60,62,60,62,60,62,60,61,62,60,60,61,62,60,60,60,60,60,61,61,61,61,61,62,62,62,62,62,62,62,60,61,62,60,61,62,62,60,62,60,61,62,60,62,60,60,60,61,62,61,62,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,60,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,65,0,0,65,0,0,65,44,71,41,65,44,71,41,65,65,65,44,41,44,41,65,44,71,41,65,65,65,44,41,44,71,41,65,44,41,65,71,44,41,65,44,41,65,44,71,41,44,71,71,44,44,44,44,44,44,44,71,71,71,71,71,71,71,41,41,41,41,41,41,41,65,65,65,65,65,65,65,65,44,71,41,65,44,71,41,65,44,71,41,65,44,71,41,65,44,71,41,65,44,71,41,65,0,84,85,0,0,85,85,0,78,0,0,0,78,85,78,85,0,78,0,84,0,0,85,85,78,0,0,0,78,0,0,0,0,0,0,0,85,78,85,0,0,0,78,78,85,84,0,0,0,0,78,78,78,78,78,78,78,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,78,85,78,85,78,85,78,85,0,0,0,0,0,0,0,0,0,78,85,78,85,78,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,12,0,12,12,0,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,0,0,0,12,12,12,12,12,12,0,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,0,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,52,52,0,0,0,0,52,76,153,46,76,76,153,46,52,76,153,46,52,76,153,46,76,153,46,153,153,76,46,76,153,52,76,76,76,76,76,153,153,153,153,153,52,52,52,52,52,76,153,46,52,52,76,153,46,52,52,52,46,76,76,76,76,153,76,76,153,46,52,46,46,76,153,76,76,76,76,76,76,76,153,153,153,153,153,153,153,46,46,46,46,46,46,46,52,52,52,52,52,52,52,52,76,153,46,52,52,76,153,46,52,76,153,46,52,76,153,46,52,76,153,46,52,76,153,46,52,76,153,46,52,210,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,0,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,0,0,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,0,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,0,171,0,0,0,171,0,0,0,0,0,0,0,0,0,169,173,174,175,176,177,178,179,180,181,176,179,176,174,175,178,178,172,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,0,70,172,174,175,170,176,179,70,169,173,174,175,176,177,178,179,180,181,169,173,174,175,176,177,178,179,180,181,173,174,175,176,177,178,179,173,174,175,176,177,178,179,174,175,173,70,172,173,174,175,176,177,178,179,70,172,174,175,173,174,175,176,177,178,179,180,181,173,173,173,173,173,174,174,174,174,174,175,175,175,175,175,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,180,180,180,180,180,181,181,181,181,181,176,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,70,172,70,172,70,172,173,174,175,176,177,178,179,180,181,173,172,170,169,173,174,175,176,177,178,179,180,181,70,172,70,172,173,177,176,179,177,176,179,176,173,174,175,176,177,178,179,176,170,70,172,177,176,172,172,172,172,172,172,172,170,170,170,170,170,170,170,169,169,169,169,169,169,169,173,173,173,173,173,173,173,174,174,174,174,174,174,174,175,175,175,175,175,175,175,176,176,176,176,176,176,176,177,177,177,177,177,177,177,178,178,178,178,178,178,178,179,179,179,179,179,179,179,180,180,180,180,180,180,180,181,181,181,181,181,181,181,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,178,173,174,175,176,177,178,179,176,179,170,70,172,70,172,176,169,173,174,175,176,177,178,179,180,181,176,179,172,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,174,175,172,170,169,173,174,175,176,177,178,179,180,181,170,172,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,176,179,172,170,169,173,174,175,176,177,178,179,180,181,180,181,180,181,184,0,0,183,0,183,0,183,183,0,0,184,184,184,0,0,183,183,0,183,0,0,0,0,183,183,183,183,183,183,0,0,0,184,183,183,0,183,184,183,184,184,184,184,184,184,183,0,0,0,0,0,183,183,183,183,183,183,183,0,183,0,0,0,0,183,183,183,183,0,0,0,0,0,0,0,183,183,184,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,195,194,195,0,194,195,194,195,194,195,0,194,194,194,194,194,194,194,195,195,195,195,195,195,195,194,195,194,195,194,195,194,195,194,195,194,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,53,53,200,200,0,0,53,53,0,0,53,53,53,53,53,53,0,0,0,0,0,0,53,53,53,0,0,53,0,0,0,0,0,53,53,53,53,53,53,53,0,53,53,53,53,53,53,53,53,53,73,73,73,73,73,73,73,73,0,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,211,212,213,211,214,212,212,213,214,215,216,215,216],"f":"``````{{cb}d{}}0{ce{}{}}000`{ff}{hh}{{ce}d{}{}}0{{hh}j}{{ce}j{}{}}{{lnA`{Af{AbAd}}Ah{Al{Aj}}}{{B`{dAn}}}}``{{}h}{{hh}Bb}{{ce}Bb{}{}}0000```{{fBd}Bf}0{{hBd}Bf}{cc{}}{Bhh}1{Bjh}{{hc}dBl}??```{{nh}{{B`{{Bn{Bh}}f}}}}{{{C`{Bh}}Cb}{{B`{dCd}}}}{{hh}{{Al{j}}}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}3521064`{ce{}{}}0{cCn{}}{cD`{}}{c{{B`{e}}}{}{}}000{cDb{}}0`4444``44``````44{{{Dd{c}}Bd}Bf{DfDhDjDl}}{{{Dn{c}}}{{Dd{c}}}{DfDhDj}}{{{E`{c}}}{{Dd{c}}}{DfDhDj}}{cc{}}8`:=>;<9?554888`88{{{E`{c}}cA`h}{{Ed{Eb}}}{DfDhDj}}{{{E`{c}}Bd}Bf{DfDhDj}}2{{{E`{c}}c}{{Al{{Ed{Eb}}}}}{DfDhDj}};{Ef{{E`{c}}}{DfDhDj}}>{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}?{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}>>={ce{}{}}00`00{{{Dn{c}}cA`h}{{Ed{Eh}}}{DhDjDf}}{{{Dn{c}}}Ef{DhDjDf}}{{{Dn{c}}Bd}Bf{DhDjDf}}={{{Dn{c}}c}{{Al{{Ed{Eh}}}}}{DhDjDf}}4{Ef{{Dn{c}}}{DhDjDf}}8:9{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}98{c{{B`{e}}}{}{}}0{cDb{}}999`99{{EfA`{Al{Aj}}}{{B`{EjAn}}}}{{EfA`El}{{B`{EjAn}}}}{Efl}{{}Ef}{{EfEf}Bb}{{ce}Bb{}{}}0000{{EfBd}Bf}{cc{}}{{}l}{ce{}{}}6{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}?>{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{c{{B`{e}}}{}{}}0{cDb{}}777``{{cb}d{}}08888{EnEn}{AjAj}{{ce}d{}{}}0{{F`A`}{{B`{EnFb}}}}{{lF`En}Aj}{{EnBd}Bf}{{AjBd}Bf}{cc{}}0``{ce{}{}}0``{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}>?{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}43256``77{c{{B`{e}}}{}{}}000``{cDb{}}0999999```````````````````````9999{{AnBd}Bf}0{{FdBd}Bf}0{{{Ch{Ff}}}An}{FhAn}{FjAn}{FlAn}{FnAn}{cc{}}{G`An}{GbAn}2{ce{}{}}0{GdAn}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}0534621{An{{Al{Gf}}}}{cCn{}}0{cD`{}}0{c{{B`{e}}}{}{}}000{cDb{}}0======````{{cb}d{}}00`>>>>>>`{GhGh}{GjGj}{GlGl}{{ce}d{}{}}00{{GhGh}j}{{GlGl}j}{{ce}j{}{}}0{{}Gh}{{}Gl}{c{{B`{Gh}}}Gn}{c{{B`{Gj}}}Gn}{c{{B`{Gl}}}Gn}`{{GhGh}Bb}{{GjGj}Bb}{{GlGl}Bb}{{ce}Bb{}{}}00000000000000``{{GhBd}Bf}{{GjBd}Bf}{{GlBd}Bf}{cc{}}00{Gj{{B`{GlAn}}}}{{Ghc}dBl}{{Glc}dBl}{ce{}{}}00{{GhGh}{{Al{j}}}}{{GlGl}{{Al{j}}}}```````{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}14526032456031`{{Ghc}B`H`}{{Gjc}B`H`}{{Glc}B`H`}<<<{c{{B`{e}}}{}{}}00000{cDb{}}00>>>>>>>>>``````{{cb}d{}}????????{HbHb}{{ce}d{}{}}{{EhHd}Hf}{{EbHd}Hf}{{EhBd}Bf}{{EbBd}Bf}{{HbBd}Bf}{cc{}}00{EbHb}1{EhHb}{{Ejh}Eh}{{Ejh}Eb}{ce{}{}}000{{EhHd{C`{Hh}}{Al{Hj}}c}{{B`{GlAn}}}Hl}{{EbHd{C`{Hh}}{Al{Hj}}c}{{B`{GlAn}}}Hl}{{HbHd{C`{Hh}}{Al{Hj}}c}{{B`{GlAn}}}Hl}{Hn{{C`{I`}}}}{{EhHd{C`{Ib}}{Al{Hj}}}{{B`{GjAn}}}}{{EbHd{C`{Ib}}{Al{Hj}}}{{B`{GjAn}}}}{{HbHd{C`{Ib}}{Al{Hj}}}{{B`{GjAn}}}}{{EhHd{C`{Ib}}{Al{Hj}}c}{{B`{GjAn}}}Hl}{{EbHd{C`{Ib}}{Al{Hj}}c}{{B`{GjAn}}}Hl}{{HbHd{C`{Ib}}{Al{Hj}}c}{{B`{GjAn}}}Hl}{Ehn}{{Id{Af{AbAd}}}Hn}{{If{Af{AbAd}}Ih}Eb}{Eh{{Af{AbAd}}}}{{HnGdIjIb}{{B`{d{Ch{Ff}}}}}}{{HnBj{C`{I`}}}d}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}512306425460132106453{ce{}{}}{c{{B`{e}}}{}{}}0000000{cDb{}}000222222222222``````{{cb}d{}}`{{IlIn}In}```4444`{{IlBj{C`{J`}}Jb}Jd}`{{{Jh{}{{Jf{c}}}}l{Af{AbAd}}InJbIlAh}{{B`{dc}}}Gf}``{JjJj}{{ce}d{}{}}{{IllJ`{Jl{Bj}}{Jl{{C`{J`}}}}Jb}Jd}```{Ilc{}}```````{{JjBd}Bf}{cc{}}0``{{lInJbJ`}{{Jn{J`}}}}{IlIn}>>{{{Jh{}{{Jf{c}}}}}{{Al{Hd}}}Gf}````{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}6453210````````{{IllJ`{Cj{Jj{C`{J`}}}}{C`{{Cj{K`Jj{C`{J`}}}}}}Jb}{{B`{JdAn}}}}{ce{}{}}{c{{B`{e}}}{}{}}000{cDb{}}0`````````222222{{l{Af{AbAd}}InJbIlAhKb}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}00{{l{Af{AbAd}}InJbIlAhKf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKh}{{Jn{d}}}}0020000002{{l{Af{AbAd}}InJbIlAhKj}{{Jn{d}}}}33{{l{Af{AbAd}}InJbIlAhKl}{{Jn{d}}}}224{{l{Af{AbAd}}InJbIlAhKn}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhL`}{{Jn{d}}}}66{{l{Af{AbAd}}InJbIlAhLb}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLd}{{Jn{d}}}}8{{l{Af{AbAd}}InJbIlAhLf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLj}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLl}{{Jn{J`}}}}{{l{Af{AbAd}}InJbIlAhLn}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhM`}{{Jn{d}}}}0{{l{Af{AbAd}}InJbIlAhMb}{{Jn{d}}}}???{{l{Af{AbAd}}InJbIlAhMd}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}000000000{{l{Af{AbAd}}InJbIlAhMf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhJ`GdGdBj}{{Jn{J`}}}}{{l{Af{AbAd}}InJbIlAhMh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhMj}{{Jn{d}}}}44{{l{Af{AbAd}}InJbIlAhMl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhMn}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhN`}{{Jn{d}}}}7{{l{Af{AbAd}}InJbIlAhNb}{{Jn{d}}}}88{{l{Af{AbAd}}InJbIlAhNd}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKh}{{Jn{d}}}}0={{l{Af{AbAd}}InJbIlAhNf}{{Jn{d}}}};;;;{{l{Af{AbAd}}InJbIlAhNh}{{Jn{d}}}}2{{l{Af{AbAd}}InJbIlKd}{{Jn{d}}}}03{{l{Af{AbAd}}InJbIlKh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhNj}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhNl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhNn}{{Jn{d}}}}1{{l{Af{AbAd}}InJbIlAhO`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{Ob}}}{{Jn{d}}}}7737{{l{Af{AbAd}}InJbIlOf}{{Jn{d}}}}4{{l{Af{AbAd}}InJbIlAhOh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{Oj}}}{{Jn{d}}}}::6:266{{l{Af{AbAd}}InJbIlAhOl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{On}}}{{Jn{d}}}}<<8<488{{l{Af{AbAd}}InJbIlAhA@`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{A@b}}}{{Jn{d}}}}>>:>6::{{l{Af{AbAd}}InJbIlAhA@d}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{A@f}}}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlKd}{{Jn{d}}}}0=09==={{l{Af{AbAd}}InJbIlAhA@h}{{Jn{d}}}}>{{l{Af{AbAd}}InJbIlAhL`}{{Jn{d}}}}??0???????????????0???{{l{Af{AbAd}}InJbIlAhA@j}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}0{{l{Af{AbAd}}InJbIlAhGd{C`{J`}}}{{Jn{J`}}}}{{l{Af{AbAd}}InJbIlAhA@l}{{Jn{d}}}}2{{l{Af{AbAd}}InJbIlAh{Od{A@n}}}{{Jn{d}}}}333333{{l{Af{AbAd}}InJbIlAhOf}{{Jn{d}}}}44{{l{Af{AbAd}}InJbIlAhAA`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{AAb}}}{{Jn{d}}}}::6:{{l{Af{AbAd}}InJbIlOf}{{Jn{d}}}}777{{l{Af{AbAd}}InJbIlAhAAd}{{Jn{d}}}}8888{{l{Af{AbAd}}InJbIlAhAAf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{AAh}}}{{Jn{d}}}}>>:>3:::{{l{Af{AbAd}}InJbIlAhAAj}{{Jn{d}}}};{{l{Af{AbAd}}InJbIlAhAAl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{AAn}}}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlKd}{{Jn{d}}}}0>07>>>{{l{Af{AbAd}}InJbIlAhAB`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{ABb}}}{{Jn{d}}}}22{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}3:00000`{ce{}{}}0`{{}Ah}`{{AhBd}Bf}{cc{}}`{Ah{{Al{c}}}ABd}0{{Ahe}cABd{{ABh{}{{ABf{c}}}}}}{{Ahc}{{Al{c}}}ABd}65``2{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}```{c{{B`{e}}}{}{}}0{cDb{}}???`??{{ABjlnInJb}{{Jn{d}}}}{{ABjInJb}{{Jn{d}}}}{{ABjlnInABlJb}{{Jn{d}}}}{{}ABj}{{ABjlnInJ`BjJb}{{Jn{d}}}}{{ABjBd}Bf}{cc{}}{ce{}{}}{{ABjlnInJ`Jb}{{Jn{d}}}}000000{{ABjABn}d}<>={{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}??>666`66{{}AC`}8{{AC`Gd}{{Al{{Bn{Gd}}}}}}84{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}346{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{AC`Gd{Al{{C`{Gd}}}}}d}{c{{B`{e}}}{}{}}0{cDb{}}>>>```````{{cb}d{}}00`????????{IhIh}{ACbACb}{ElEl}{{ce}d{}{}}00{{ACbACb}j}{{ce}j{}{}}{{}Ih}{{}El}{{IhIh}Bb}{{ACbACb}Bb}{{FhFh}Bb}{{ce}Bb{}{}}00000000000000{{IhBd}Bf}{{ACbBd}Bf}{{ElBd}Bf}{{FhBd}Bf}0{cc{}}00{ACdFh}1{ACfFh}``{{IhACh}{{Al{Hj}}}}{{IhAChACj}{{Al{Hj}}}}{{IhHd{Al{Hj}}}{{B`{HjFh}}}}{{ACbc}dBl}{{IhHd}{{Al{Hj}}}}{ce{}{}}000``{{A`{Al{El}}}{{B`{IhFh}}}}{{ACbACb}{{Al{j}}}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}621345056432106213450{Fh{{Al{Gf}}}}:::{cCn{}}{cD`{}}{c{{B`{e}}}{}{}}0000000{cDb{}}000>>>>>>>>>>>>``>>{{{ACl{c}}Bd}BfDl}{cc{}}{ce{}{}}{ACn{{ACl{c}}}{}}{{{ACl{c}}}ACn{}}:;{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}>776333`33{{AD`Bd}Bf}{{lJ`Jb}Jd}65{{ln}AD`}{{lJ`J`Jb}Jd}?4{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{c{{B`{e}}}{}{}}0{cDb{}}>>>`>>{{}ADb}{{ADblnJ`InJb}{{Jn{ADd}}}}{{ADblnInJb}{{Jn{ADd}}}}{{ADblnInJ`Jb}{{Jn{ADd}}}}{{ADblnInJ`J`Jb}{{Jn{ADd}}}}{{ADblnInJ`J`J`Jb}{{Jn{ADd}}}}{{ADbBd}Bf}{cc{}}{ce{}{}}{{ADblnInJ`J`J`Jb}{{Jn{J`}}}}6654544<=>?{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}>>=44{{ADblnInJbJ`J`J`}{{Jn{ADd}}}}5``55{{}ADf}76{{ADfGd{ADh{c}}c}d{}}5{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}87{c{{B`{e}}}{}{}}0{cDb{}}==={{ADfGd}{{Al{{ADl{ADj}}}}}}`>>{ADnJ`}{{ADnBd}Bf}{cc{}}{ce{}{}}{{J`In}ADn}{ADnAE`}{ADn{{Al{AE`}}}}<{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}>{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}>{{ADnIn}d}>>=888`88{{EjBd}Bf}:{Ej{{Al{c}}}ABd}{{Ejc}{{Al{c}}}ABd};{EjAh}{Ejn}{{n{Af{AbAd}}Ah}Ej}{Ej{{Af{AbAd}}}}59;{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}};={c{{B`{e}}}{}{}}0{cDb{}}{ce{}{}}00`````````````````{{cb}d{}}000000000```````111111111111111111111111{{{AEd{AEb}}AEb{AEd{AEb}}}d}{{HlHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}{{AEhHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}`````{{HlHh{C`{Hh}}}{{Bn{Hh}}}}{AEbAEb}{AEjAEj}{AElAEl}{AEnAEn}{AF`AF`}{AFbAFb}{AFdAFd}{AFfAFf}{AFhAFh}{AFjAFj}{{ce}d{}{}}000000000{{AEjAEj}j}{{AElAEl}j}{{AEnAEn}j}{{AF`AF`}j}{{AFbAFb}j}{{AFdAFd}j}{{AFfAFf}j}{{ce}j{}{}}000000``{{}AEj}{{HlHhHh{C`{Hh}}BbHj}{{AEf{{Cj{Hh{Bn{Hh}}}}}}}}{{AEhHhHh{C`{Hh}}BbHj}{{AEf{{Cj{Hh{Bn{Hh}}}}}}}}{c{{B`{AEj}}}Gn}{c{{B`{AEl}}}Gn}{c{{B`{AEn}}}Gn}{c{{B`{AF`}}}Gn}{c{{B`{AFb}}}Gn}{c{{B`{AFd}}}Gn}{c{{B`{AFf}}}Gn}{{Hl{C`{Hh}}{C`{Hh}}Hj}{{AEf{d}}}}{{AEh{C`{Hh}}{C`{Hh}}Hj}{{AEf{d}}}}``{{AEjAEj}Bb}{{AElAEl}Bb}{{AEnAEn}Bb}{{AF`AF`}Bb}{{AFbAFb}Bb}{{AFdAFd}Bb}{{AFfAFf}Bb}{{AFhAFh}Bb}{{AFjAFj}Bb}{{ce}Bb{}{}}00000000000000000000000000000000000000000000`{{{AEd{c}}Bd}BfDl}{{AEbBd}Bf}{{AEjBd}Bf}{{AElBd}Bf}{{AEnBd}Bf}{{AF`Bd}Bf}{{AFbBd}Bf}{{AFdBd}Bf}{{AFfBd}Bf}{{AFhBd}Bf}{{AFjBd}Bf}{cc{}}00000000000{{HlI`Hj}{{AEf{Hh}}}}{{AEhI`Hj}{{AEf{Hh}}}}{{HlHj}{{AEf{AEl}}}}{{AEhHj}{{AEf{AEl}}}}{{HlHj}{{AEf{AEn}}}}{{AEhHj}{{AEf{AEn}}}}{{AEjc}dBl}{{AElc}dBl}{{AEnc}dBl}{{AF`c}dBl}{{AFbc}dBl}{{AFdc}dBl}{{AFfc}dBl}{{AFhc}dBl}{{AFjc}dBl}`{ce{}{}}00000000000{{Hl{C`{I`}}Hj}{{AEf{AEj}}}}{{AEh{C`{I`}}Hj}{{AEf{AEj}}}}{{HlHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}{{AEhHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}````````{{AEjAEj}{{Al{j}}}}{{AElAEl}{{Al{j}}}}{{AEnAEn}{{Al{j}}}}{{AF`AF`}{{Al{j}}}}{{AFbAFb}{{Al{j}}}}{{AFdAFd}{{Al{j}}}}{{AFfAFf}{{Al{j}}}}``{{HlHhHj}{{AEf{d}}}}{{AEhHhHj}{{AEf{d}}}}``{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}05612346234501524306143206513206514013562465102342415603014326543156021630254{{HlAFhAFhHj}{{AEf{AFh}}}}{{AEhAFhAFhHj}{{AEf{AFh}}}}{{HlAEjBbHj}{{AEf{{Al{AFh}}}}}}{{AEhAEjBbHj}{{AEf{{Al{AFh}}}}}}{{HlAFhHj}{{AEf{{Cj{AEjAEj}}}}}}{{AEhAFhHj}{{AEf{{Cj{AEjAEj}}}}}}{{HlAFhAEjHj}{{AEf{AFh}}}}{{AEhAFhAEjHj}{{AEf{AFh}}}}{{HlAEjAEjHj}{{AEf{{Al{AFh}}}}}}{{AEhAEjAEjHj}{{AEf{{Al{AFh}}}}}}{{HlAFjAFjHj}{{AEf{AFj}}}}{{AEhAFjAFjHj}{{AEf{AFj}}}}{{HlAEjBbHj}{{AEf{{Al{AFj}}}}}}{{AEhAEjBbHj}{{AEf{{Al{AFj}}}}}}{{HlAFjHj}{{AEf{{Cj{AEjAEj}}}}}}{{AEhAFjHj}{{AEf{{Cj{AEjAEj}}}}}}{{HlAFjAEjHj}{{AEf{AFj}}}}{{AEhAFjAEjHj}{{AEf{AFj}}}}{{HlAEjAEjHj}{{AEf{{Al{AFj}}}}}}{{AEhAEjAEjHj}{{AEf{{Al{AFj}}}}}}{{HlHh{C`{Hh}}Hj}{{AEf{d}}}}{{AEhHh{C`{Hh}}Hj}{{AEf{d}}}}`{{AEjc}B`H`}{{AElc}B`H`}{{AEnc}B`H`}{{AF`c}B`H`}{{AFbc}B`H`}{{AFdc}B`H`}{{AFfc}B`H`}```{{HlAFlHhHj}{{AEf{Hh}}}}{{AEhAFlHhHj}{{AEf{Hh}}}}{{HlAFlHhHhHj}{{AEf{d}}}}{{AEhAFlHhHhHj}{{AEf{d}}}}`{ce{}{}}000000000``{c{{B`{e}}}{}{}}00000000000000000000000``{cDb{}}00000000000`222222222222222222222222``222222222222```````{{cb}d{}}`{{{AFn{c}}}c{}}`44``{{{AG`{}{{Jf{c}}}}ln{Af{AbAd}}AhGd}{{B`{AGbc}}}Gf}{{{AG`{}{{Jf{c}}}}l{Af{AbAd}}InJbIlAhGd}{{B`{J`c}}}Gf}{{{AG`{}{{Jf{c}}}}l{Af{AbAd}}InJbIlAhGd}{{B`{dc}}}Gf}``{{{AFn{c}}}{{AFn{c}}}AGd}{{ce}d{}{}}`5````{{{AFn{c}}{AFn{c}}}BbDf}{{ce}Bb{}{}}0000```{{{AG`{}{{Jf{c}}}}}{{Al{{C`{Gd}}}}}Gf}{{{AFn{c}}Bd}BfDl}{cc{}}`{{{AFn{c}}e}dDjBl}{{{AG`{}{{Jf{c}}}}}{{Al{Bj}}}Gf}{ce{}{}}{{{AG`{}{{Jf{c}}}}}BbGf}{{{AG`{}{{Jf{c}}}}{Af{AbAd}}}BbGf}{{{AG`{}{{Jf{c}}}}}{{Al{Bb}}}Gf}11{{{AG`{}{{Jf{c}}}}{Af{AbAd}}}{{B`{AGfc}}}Gf}{{Gdc}{{AFn{c}}}{}}`````{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}`{{{AFn{c}}}Gd{}}````={c{{B`{e}}}{}{}}0{cDb{}}```````??{{{AG`{}{{Jf{c}}}}}{{Al{{C`{Gd}}}}}Gf}{ce{}{}}{{ln{Af{AbAd}}Ah{AFn{AGh}}}{{Jn{AGb}}}}{{ln{Af{AbAd}}Ah{AFn{AGj}}}{{Jn{AGb}}}}{{ln{Af{AbAd}}Ah{AFn{AGl}}}{{Jn{AGb}}}}21{{ln{Af{AbAd}}AhAGj}{{Jn{AGb}}}}{{ln{Af{AbAd}}Ah{AFn{AGn}}}{{Jn{AGb}}}}333`{{ln{Af{AbAd}}Ah{AFn{AH`}}}{{Jn{AGb}}}}{{{Af{AbAd}}{C`{Gd}}}{{Jn{{Cj{AGfAGf{Bn{AGf}}}}}}}}{{ln{Af{AbAd}}Ah{C`{Gd}}}{{Jn{{Cj{AGfAHb{Bn{AHb}}}}}}}}``88886{AHdACn}{AHfAHh}{cc{}}0;;{Ah{{ACl{Hh}}}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}5601234{c{{B`{e}}}{}{}}000{cDb{}}0{ce{}{}}00000{{ln{Af{AbAd}}Ah{AFn{AGh}}}{{Jn{AGb}}}}0{{ln{Af{AbAd}}Ah{AFn{AGj}}}{{Jn{AGb}}}}11000011{{ln{Af{AbAd}}Ah{AFn{AHj}}}{{Jn{AGb}}}}11{{ln{Af{AbAd}}Ah{AFn{AHl}}}{{Jn{AGb}}}}222{{ln{Af{AbAd}}Ah{AFn{AHn}}}{{Jn{AGb}}}}3333334```{{cb}d{}}66{{AI`ln{Af{AbAd}}AhGd}{{B`{AGbAn}}}}{{AI`ln{Af{AbAd}}AhGd}{{B`{{Cj{AGbAGf}}An}}}}{Cb{{ADl{A`}}}}{{lCb}{{B`{{Cj{A`Aj}}An}}}}{FjFj}{{ce}d{}{}}{{nAhh}ABn}{c{{`{Dl}}}{{ADj{Bd}{{ABf{Bf}}}}}}{{FjFj}Bb}{{ce}Bb{}{}}0000{c{{Jl{AFl}}}{{AIb{AHh}}}}{ABl{{Jl{AFl}}}}0{{A`ABl}{{Al{{AId{ACh}}}}}}{{A`Bj}{{Al{{AId{ACh}}}}}}{{A`ABl}Hd}{{FjBd}Bf}0{cc{}}{Hd{{AIf{ABl}}}}{AFlAGf}{ce{}{}}{{AGfBj}{{B`{{Cj{AGfBj}}Fj}}}}{{AFlAFl}AFl}{{BjBj}Bj}{{AGfBj}Bj}{ABnd}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{ln}{{B`{dFl}}}}={cCn{}}{cD`{}}{c{{B`{e}}}{}{}}0{cDb{}}{ce{}{}}00```````````````````````{{cb}d{}}11{IbIb}{{ce}d{}{}}{c{{B`{Ib}}}Gn}{{IbIb}Bb}{{ce}Bb{}{}}0000{ABlIb}{{IbBd}Bf}{I`Ib}{AIhIb}{cc{}}{HhIb}{K`Ib}{AIjIb}{AFlIb}{{{Bn{c}}}Ib{{AIb{Ib}}}}{{{Jl{c}}}Ib{{AIb{Ib}}}}{{{C`{c}}}Ib{{AIb{Ib}}AGd}}{AIlIb}{AInIb}{HjIb}{BhIb}{AJ`Ib}{ce{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{Ibc}B`H`}8{c{{B`{e}}}{}{}}0{cDb{}}:::`````````````","D":"DA`","p":[[5,"Private",1977],[1,"unit"],[5,"LLVMCompileError",0,1978],[6,"OptLevel",0,1978],[6,"Ordering",1979],[5,"Context",1980],[5,"Module",1981],[5,"Program",1982],[6,"CoreType",1983],[6,"CoreLibfunc",1983],[5,"ProgramRegistry",1984],[5,"MetadataStorage",851],[5,"DebugLocations",185],[6,"Option",1985],[6,"Error",241],[6,"Result",1986],[1,"bool"],[5,"Formatter",1987],[8,"Result",1987],[1,"u8"],[1,"usize"],[10,"Hasher",1988],[5,"Vec",1989],[1,"slice"],[5,"Path",1990],[5,"Error",1991],[5,"HashMap",1992],[5,"Box",1993],[1,"tuple"],[5,"VecDeque",1994],[5,"SmolStr",1995],[5,"String",1996],[5,"TypeId",1997],[6,"ProgramCache",82],[10,"PartialEq",1979],[10,"Eq",1979],[10,"Hash",1988],[10,"Debug",1987],[5,"JitProgramCache",131],[5,"AotProgramCache",109],[5,"AotNativeExecutor",433,1998],[5,"Rc",1999],[5,"NativeContext",154],[5,"JitNativeExecutor",433,2000],[5,"NativeModule",1193],[5,"MetadataComputationConfig",938],[5,"DebugInfo",185],[5,"RootDatabase",2001],[5,"DiagnosticAdded",2002],[6,"SierraAssertError",241],[6,"ProgramRegistryError",1984],[6,"GasMetadataError",938],[5,"LayoutError",1842],[6,"Error",2003],[6,"EditStateError",2004],[5,"TryFromIntError",2005],[5,"LayoutError",2006],[5,"ConcreteTypeId",2007],[10,"Error",2008],[5,"BuiltinStats",316],[5,"ExecutionResult",316],[5,"ContractExecutionResult",316],[10,"Deserializer",2009],[10,"Serializer",2010],[6,"NativeExecutor",433],[5,"FunctionId",2007],[6,"c_void",2011],[5,"Felt",2012],[1,"u128"],[10,"StarknetSyscallHandler",1219],[5,"ArgumentMapper",433],[1,"u64"],[6,"JitValue",1896],[5,"Bump",2013],[5,"Library",2014],[5,"GasMetadata",938],[6,"CoreTypeConcrete",1983],[5,"LibfuncHelper",536],[5,"Block",2015],[5,"Value",2016],[5,"Location",2017],[5,"Operation",2018],[17,"Error"],[10,"LibfuncBuilder",536],[6,"BranchTarget",536],[1,"array"],[8,"Result",241],[1,"i64"],[6,"ApTrackingConcreteLibfunc",2019],[5,"SignatureOnlyConcreteLibfunc",2020],[6,"ArrayConcreteLibfunc",2021],[5,"SignatureAndTypeConcreteLibfunc",2020],[6,"BoolConcreteLibfunc",2022],[6,"BoxConcreteLibfunc",2023],[6,"Bytes31ConcreteLibfunc",2024],[5,"SignatureAndConstConcreteLibfunc",2025],[6,"CastConcreteLibfunc",2026],[5,"DowncastConcreteLibfunc",2026],[6,"ConstConcreteLibfunc",2027],[5,"ConstAsBoxConcreteLibfunc",2027],[5,"ConstAsImmediateConcreteLibfunc",2027],[5,"ConstConcreteType",2027],[6,"CouponConcreteLibfunc",2028],[5,"SignatureAndFunctionConcreteLibfunc",2029],[6,"DebugConcreteLibfunc",2030],[6,"EcConcreteLibfunc",2031],[6,"EnumConcreteLibfunc",2032],[5,"EnumFromBoundedIntConcreteLibfunc",2032],[5,"EnumInitConcreteLibfunc",2032],[6,"Felt252Concrete",2033],[6,"Felt252BinaryOperationConcrete",2033],[5,"Felt252ConstConcreteLibfunc",2033],[6,"Felt252DictConcreteLibfunc",2034],[6,"Felt252DictEntryConcreteLibfunc",2034],[6,"GasConcreteLibfunc",2035],[6,"MemConcreteLibfunc",2036],[6,"NullableConcreteLibfunc",2037],[6,"PedersenConcreteLibfunc",2038],[6,"PoseidonConcreteLibfunc",2039],[6,"Sint128Concrete",2040],[5,"Sint128Traits",2040],[5,"IntConstConcreteLibfunc",2041],[5,"IntOperationConcreteLibfunc",2041],[8,"Sint16Concrete",2042],[5,"Sint16Traits",2042],[8,"Sint32Concrete",2042],[5,"Sint32Traits",2042],[8,"Sint64Concrete",2042],[5,"Sint64Traits",2042],[8,"Sint8Concrete",2042],[5,"Sint8Traits",2042],[6,"StarkNetConcreteLibfunc",2043],[6,"StructConcreteLibfunc",2044],[6,"Uint128Concrete",2045],[5,"Uint128Traits",2045],[8,"Uint16Concrete",2046],[5,"Uint16Traits",2046],[6,"Uint256Concrete",2047],[8,"Uint32Concrete",2046],[5,"Uint32Traits",2046],[6,"Uint512Concrete",2048],[8,"Uint64Concrete",2046],[5,"Uint64Traits",2046],[8,"Uint8Concrete",2046],[5,"Uint8Traits",2046],[10,"Any",1997],[17,"Output"],[10,"FnOnce",2049],[5,"DebugUtils",885],[1,"str"],[5,"ExecutionEngine",2050],[5,"EnumSnapshotVariantsMeta",917],[5,"GasCost",938],[6,"ApChangeError",2051],[6,"CostError",2052],[5,"StatementIdx",1982],[6,"CostTokenType",2035],[5,"PrimeModuloMeta",1070],[5,"BigUint",2053],[5,"ReallocBindingsMeta",1091],[5,"RuntimeBindingsMeta",1113],[5,"OperationRef",2018],[5,"SnapshotClonesMeta",1147],[8,"CloneFn",1147],[10,"Fn",2049],[5,"Arc",2054],[5,"TailRecursionMeta",1169],[5,"BlockRef",2015],[5,"Felt252Abi",1219],[5,"ArrayAbi",1219],[8,"SyscallResult",1219],[5,"DummySyscallHandler",1219],[5,"U256",1219],[5,"ExecutionInfo",1219],[5,"ExecutionInfoV2",1219],[5,"TxV2Info",1219],[5,"ResourceBounds",1219],[5,"BlockInfo",1219],[5,"TxInfo",1219],[5,"Secp256k1Point",1219],[5,"Secp256r1Point",1219],[1,"u32"],[5,"WithSelf",1682],[10,"TypeBuilder",1682],[5,"Type",2055],[10,"Clone",2056],[5,"Layout",2006],[5,"InfoAndTypeConcreteType",2057],[5,"InfoOnlyConcreteType",2057],[5,"BoundedIntConcreteType",2058],[5,"CouponConcreteType",2028],[5,"EnumConcreteType",2032],[8,"TypeLayout",1772],[5,"PRIME",1776],[5,"HALF_PRIME",1776],[5,"BigInt",2059],[6,"StarkNetTypeConcrete",2043],[6,"Secp256PointTypeConcrete",2060],[5,"StructConcreteType",2044],[10,"ProgramRegistryExt",1842],[10,"Into",2061],[5,"GenFunction",1982],[6,"Cow",2062],[1,"u16"],[1,"i32"],[1,"i16"],[1,"i8"],[1,"i128"],[15,"Range",315],[15,"NotEnoughGas",1069],[15,"Struct",1964],[15,"Enum",1964],[15,"Felt252Dict",1964],[15,"BoundedInt",1964],[15,"Secp256K1Point",1964],[15,"Secp256R1Point",1964]],"r":[[2,1978],[5,1978],[19,2063],[45,1978],[46,1978],[83,109],[85,131],[434,1998],[437,2000]],"b":[[32,"impl-Display-for-LLVMCompileError"],[33,"impl-Debug-for-LLVMCompileError"],[36,"impl-From%3Cu8%3E-for-OptLevel"],[38,"impl-From%3Cusize%3E-for-OptLevel"],[91,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[92,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[268,"impl-Debug-for-Error"],[269,"impl-Display-for-Error"],[270,"impl-Debug-for-SierraAssertError"],[271,"impl-Display-for-SierraAssertError"],[272,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[273,"impl-From%3CGasMetadataError%3E-for-Error"],[274,"impl-From%3CLayoutError%3E-for-Error"],[275,"impl-From%3CError%3E-for-Error"],[276,"impl-From%3CEditStateError%3E-for-Error"],[278,"impl-From%3CTryFromIntError%3E-for-Error"],[279,"impl-From%3CLayoutError%3E-for-Error"],[458,"impl-From%3CAotNativeExecutor%3E-for-NativeExecutor%3C\'m%3E"],[460,"impl-From%3CJitNativeExecutor%3C\'m%3E%3E-for-NativeExecutor%3C\'m%3E"],[988,"impl-Display-for-GasMetadataError"],[989,"impl-Debug-for-GasMetadataError"],[993,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[995,"impl-From%3CCostError%3E-for-GasMetadataError"],[1868,"impl-Display-for-LayoutError"],[1869,"impl-Debug-for-LayoutError"],[1933,"impl-From%3Cu64%3E-for-JitValue"],[1934,"impl-From%3Cu16%3E-for-JitValue"],[1936,"impl-From%3CFelt%3E-for-JitValue"],[1937,"impl-From%3Ci64%3E-for-JitValue"],[1938,"impl-From%3Ci32%3E-for-JitValue"],[1939,"impl-From%3Cu32%3E-for-JitValue"],[1940,"impl-From%3CVec%3CT%3E%3E-for-JitValue"],[1941,"impl-From%3C%5BT;+N%5D%3E-for-JitValue"],[1942,"impl-From%3C%26%5BT%5D%3E-for-JitValue"],[1943,"impl-From%3Ci16%3E-for-JitValue"],[1944,"impl-From%3Ci8%3E-for-JitValue"],[1945,"impl-From%3Cu128%3E-for-JitValue"],[1946,"impl-From%3Cu8%3E-for-JitValue"],[1947,"impl-From%3Ci128%3E-for-JitValue"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALEFgAABAAEABAABAAcADAAVAAAAFwAGAB8AAAAhAAIAJQAAACcAAQAtAAAAMAAOAEAACQBLAAMAUQAMAGAAEgB0AAAAdgANAIUABACLAAAAjQANAJwAAQCgAAgArAAdAMwAAQDQACQA9gAJAAEBFAAXAQEAHAEhAEABMQB2AQEAewE6ALgBDwDLAQAAzQEBANQBAQDXAQAA2QEAANwBAADeAToAHwIAACUCAwAvAgEANQIAAD0CAABCAgAASwINAGICBgByAgUAmQIAAJ0CAQCtAgAAtwIBALoCAQDKAgAAzAIAAPsCFwBVAwEAWAMCAFwDAABfAwAAZgMGAG4DAABwAwoAfAMAAH4DAACBAxgAmwMAAJ0DEACxAy0A4gMAAOQDBADqAwEA8AM+ADAEAgA3BAwARQQCAE0EDABbBAIAYwQAAGsEAABuBAsAewQFAIMEDgCTBAEAlgQAAJwEBgCkBAUAqwQCALIEAwC3BA8AyAQBAMwEBwDVBCgA/wR7AIcFDwCjBe8AlQYBAJgGAACaBgEAnwYBAKMGAQCmBgAAqwYFALQGAQC4BgAAwQYAAMcGBgDPBgAA1AYDAN8GAQDiBgAA8QYAAPMGAwD4BgEA/gYaACUHBQAzBwcAPAcCAEEHBQBNBwEAVAcBAFcHEQBqBwYAcwcYAI0HAgCRBwsAngcbAA=="}],\
+["cairo_native",{"t":"PPFPPGNNNNNNCNNNNNNHCCNNNNNNNCCCNNNNNNNNNNCCCHHNNNNNNNNNNNNNNNCCNNNNNNNNNNCNNNNCCNNPEPEGCNNNNNNNCNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNOONNOONNNNNNNNNNNNNNOONNNNNNOONNNNNNNNPPPPGPPPPPPPPPPPPPIPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFNNNONNNNNNONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNPFFPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGRPKFPNCNCCCNNNNCNCMCCNNNCCCNCCCCCCCNNNCCHNNNMCCCCNNNNNNNNNNNNNNCCCCCCCCNNNNNNNNCCCCCCCCCNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFNNCNCNNCNNNNNNCCNNNNNNNNCCCNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIFNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONMNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNMNMNMNNNNNNNNNNONNNNNNNNNNNNMNMNOOOOOOOONNNNNNNOOMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNOOOMNMNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOOOOFFFNNNNNNNNNNNNNNNNNONNNNOOONNNNNNNNNNNNNOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNRKFNCNCNNCCMMMCCNNCNCCCCNNNNNNCCCMNNCNMNMMMMMMNCCCCCNNNNNNNCNCCCCNNNNCCCCCCCNNMNHHHHHHHHHHIHHHFFNNNNHNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHFKSNNNMMHHNNHHNNNNNNHHHHHHNNNHHNHHHHHNNNNNNNHNNNNNNNNNPPPPPPPPGPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOO","n":["Aggressive","Default","LLVMCompileError","Less","None","OptLevel","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","cache","clone","clone","clone_into","clone_into","cmp","compare","compile","context","debug_info","default","eq","equivalent","equivalent","equivalent","equivalent","equivalent","error","execution_result","executor","fmt","fmt","fmt","from","from","from","from","hash","into","into","libfuncs","metadata","module","module_to_object","object_to_shared_lib","partial_cmp","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","starknet","starknet_stub","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_into","try_into","type_id","type_id","types","upcast","upcast","upcast_mut","upcast_mut","utils","values","vzip","vzip","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","borrow","borrow_mut","fmt","from","from","from","into","jit","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","AotProgramCache","borrow","borrow_mut","compile_and_insert","fmt","from","get","into","new","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","JitProgramCache","borrow","borrow_mut","compile_and_insert","context","fmt","from","get","into","new","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeContext","borrow","borrow_mut","compile","compile_with_metadata","context","default","eq","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","from","initialize_mlir","into","new","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","DebugInfo","DebugLocations","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","extract","extract","fmt","fmt","from","from","funcs","funcs","into","into","libfunc_declarations","libfunc_declarations","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","statements","statements","to_owned","to_owned","try_from","try_from","try_into","try_into","type_declarations","type_declarations","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","Cast","ConstDataMismatch","EditStateError","Err","Error","Error","GasMetadataError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","borrow","borrow","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","make_missing_parameter","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","source","to_smolstr","to_smolstr","to_string","to_string","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","ranges","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","__clone_box","__clone_box","bitwise","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builtin_stats","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","default","default","deserialize","deserialize","deserialize","ec_op","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_msg","failure_flag","fmt","fmt","fmt","from","from","from","from_execution_result","hash","hash","into","into","into","partial_cmp","partial_cmp","pedersen","poseidon","range_check","remaining_gas","remaining_gas","return_value","return_values","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","segment_arena","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","Aot","AotNativeExecutor","ArgumentMapper","Jit","JitNativeExecutor","NativeExecutor","__clone_box","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","find_function_ptr","find_function_ptr","fmt","fmt","fmt","from","from","from","from","from","from","from_native_module","from_native_module","into","into","into","into","invoke_contract_dynamic","invoke_contract_dynamic","invoke_contract_dynamic","invoke_data","invoke_dynamic","invoke_dynamic","invoke_dynamic","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","module","new","new","program_registry","push","push_aligned","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip","BranchTarget","Error","Jump","LibfuncBuilder","LibfuncHelper","Return","__clone_box","ap_tracking","append_block","array","bitwise","bool","borrow","borrow","borrow_mut","borrow_mut","box","br","branch_align","build","bytes31","cast","clone","clone_into","cond_br","const","coupon","debug","deref","drop","dup","ec","enum","felt252","felt252_dict","felt252_dict_entry","fmt","from","from","function_call","gas","increment_builtin_counter","init_block","into","into","is_function_call","mem","nullable","pedersen","poseidon","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","sint128","sint16","sint32","sint64","sint8","snapshot_take","starknet","struct","switch","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uint128","uint16","uint256","uint32","uint512","uint64","uint8","unconditional_jump","unwrap_non_zero","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build_disable","build_enable","build_revoke","build","build_append","build_get","build_len","build_new","build_pop_front","build_pop_front_consume","build_slice","build_snapshot_pop_back","build_snapshot_pop_front","build_span_from_tuple","build","build","build_bool_not","build_bool_to_felt252","build","build_into_box","build_unbox","build","build","build_const","build_from_felt252","build_to_felt252","build","build_downcast","build_upcast","build","build_const_as_box","build_const_as_immediate","build_const_type_value","build","build_buy","build_refund","build","build_print","build","build","build","build_is_zero","build_neg","build_point_from_x","build_state_add","build_state_add_mul","build_state_finalize","build_state_init","build_try_new","build_unwrap_point","build_zero","build","build_enum_value","build_from_bounded_int","build_init","build_match","build_snapshot_match","build","build_binary_operation","build_const","build_is_zero","build","build_new","build_squash","build","build_finalize","build_get","build","build","build_builtin_withdraw_gas","build_get_available_gas","build_get_builtin_costs","build_withdraw_gas","build","build_alloc_local","build_finalize_locals","build_rename","build_store_local","build_store_temp","build","build","build_pedersen","build","build_hades_permutation","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build","build_call_contract","build_class_hash_const","build_class_hash_to_felt252","build_class_hash_try_from_felt252","build_contract_address_const","build_contract_address_to_felt252","build_contract_address_try_from_felt252","build_deploy","build_emit_event","build_get_block_hash","build_get_execution_info","build_get_execution_info_v2","build_keccak","build_library_call","build_replace_class","build_send_message_to_l1","build_storage_address_from_base","build_storage_address_from_base_and_offset","build_storage_address_to_felt252","build_storage_address_try_from_felt252","build_storage_base_address_const","build_storage_base_address_from_felt252","build_storage_read","build_storage_write","build","build_construct","build_deconstruct","build_struct_value","build","build_byte_reverse","build_const","build_divmod","build_equal","build_from_felt252","build_guarantee_mul","build_guarantee_verify","build_is_zero","build_operation","build_square_root","build_to_felt252","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod","build_is_zero","build_square_root","build_u256_guarantee_inv_mod_n","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod_u256","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build","MetadataStorage","borrow","borrow_mut","debug_utils","default","enum_snapshot_variants","fmt","from","gas","get","get_mut","get_or_insert_with","insert","into","new","prime_modulo","realloc_bindings","remove","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","runtime_bindings","snapshot_clones","tail_recursion","try_from","try_into","type_id","upcast","upcast_mut","vzip","DebugUtils","borrow","borrow_mut","breakpoint_marker","debug_breakpoint_trap","debug_print","default","dump_mem","fmt","from","into","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","register_impls","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","EnumSnapshotVariantsMeta","borrow","borrow_mut","default","from","get_variants","into","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","set_mapping","try_from","try_into","type_id","upcast","upcast_mut","vzip","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","__clone_box","__clone_box","ap_change_info","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","compare","default","default","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","function_set_costs","gas_info","get_gas_cost_for_statement","get_gas_cost_for_statement_and_cost_token_type","get_initial_available_gas","hash","initial_required_gas","into","into","into","into","linear_ap_change_solver","linear_gas_solver","new","partial_cmp","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","source","to_owned","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip","gas","PrimeModuloMeta","borrow","borrow_mut","fmt","from","into","new","prime","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","ReallocBindingsMeta","borrow","borrow_mut","fmt","free","from","into","new","realloc","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","RuntimeBindingsMeta","borrow","borrow_mut","default","dict_alloc_free","dict_alloc_new","dict_gas_refund","dict_get","dict_insert","fmt","from","into","libfunc_debug_print","libfunc_ec_point_from_x_nz","libfunc_ec_point_try_new_nz","libfunc_ec_state_add","libfunc_ec_state_add_mul","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vtable_cheatcode","vzip","CloneFn","SnapshotClonesMeta","borrow","borrow_mut","default","from","into","register","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","wrap_invoke","TailRecursionMeta","borrow","borrow_mut","depth_counter","fmt","from","into","new","recursion_target","return_target","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","set_return_target","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeModule","borrow","borrow_mut","fmt","from","get_metadata","insert_metadata","into","metadata","module","new","program_registry","remove_metadata","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_into","type_id","upcast","upcast_mut","vzip","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","account_contract_address","account_contract_address","account_deployment_data","block_info","block_info","block_number","block_timestamp","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cairo_native__vtable_cheatcode","call_contract","call_contract","caller_address","caller_address","capacity","chain_id","chain_id","cheatcode","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","compare","compare","compare","compare","compare","compare","compare","contract_address","contract_address","default","deploy","deploy","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","emit_event","emit_event","entry_point_selector","entry_point_selector","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fee_data_availability_mode","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","get_block_hash","get_block_hash","get_execution_info","get_execution_info","get_execution_info_v2","get_execution_info_v2","hash","hash","hash","hash","hash","hash","hash","hash","hash","hi","into","into","into","into","into","into","into","into","into","into","into","into","keccak","keccak","library_call","library_call","lo","max_amount","max_fee","max_fee","max_price_per_unit","nonce","nonce","nonce_data_availability_mode","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","paymaster_data","ptr","replace_class","replace_class","resource","resource_bounds","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","secp256k1_add","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_get_xy","secp256k1_mul","secp256k1_mul","secp256k1_new","secp256k1_new","secp256r1_add","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_get_xy","secp256r1_mul","secp256r1_mul","secp256r1_new","secp256r1_new","send_message_to_l1","send_message_to_l1","sequencer_address","serialize","serialize","serialize","serialize","serialize","serialize","serialize","signature","signature","since","storage_read","storage_read","storage_write","storage_write","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","transaction_hash","transaction_hash","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_info","tx_info","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","until","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","x","x","y","y","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","call_contract","cheatcode","clone","clone","clone","clone_into","clone_into","clone_into","data","default","default","deploy","emit_event","events","events","execution_info","fmt","fmt","fmt","from","from","from","get_block_hash","get_execution_info","get_execution_info_v2","into","into","into","keccak","keys","l2_to_l1_messages","library_call","logs","replace_class","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_mul","secp256k1_new","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_mul","secp256r1_new","send_message_to_l1","storage","storage_read","storage_write","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","Error","TypeBuilder","WithSelf","__clone_box","array","as_ref","bitwise","borrow","borrow_mut","bounded_int","box","build","build_default","build_drop","builtin_costs","bytes31","clone","clone_into","coupon","deref","ec_op","ec_point","ec_state","enum","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252","felt252_dict","felt252_dict_entry","fields","fmt","from","gas_builtin","hash","integer_width","into","is_builtin","is_complex","is_integer_signed","is_memory_allocated","is_zst","layout","new","non_zero","nullable","pedersen","poseidon","range_check","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","segment_arena","self_ty","snapshot","squashed_felt252_dict","starknet","struct","to_owned","try_from","try_into","type_id","uint128","uint128_mul_guarantee","uint16","uint32","uint64","uint8","uninitialized","upcast","upcast_mut","variants","vzip","build","build","build","build","build","build","build","build","build","build","TypeLayout","build","get_layout_for_variants","get_type_for_variants","HALF_PRIME","PRIME","borrow","borrow","borrow_mut","borrow_mut","build","deref","deref","from","from","into","into","register_prime_modulo_meta","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build","build","build","build","build","build","build","build","build","build","build","build_class_hash","build_contract_address","build_secp256_point","build_storage_address","build_storage_base_address","build_system","build","build","build","build","build","build","build","build","LayoutError","ProgramRegistryExt","SHARED_LIBRARY_EXT","__clone_box","borrow","borrow_mut","build_type","build_type_with_layout","cairo_to_sierra","cairo_to_sierra_with_debug_info","clone","clone_into","create_engine","debug_with","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252_bigint","felt252_short_str","felt252_str","find_entry_point","find_entry_point_by_idx","find_function_id","fmt","fmt","from","generate_function_name","get_integer_layout","into","layout_repeat","next_multiple_of_u32","next_multiple_of_usize","padding_needed_for","register_runtime_symbols","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_pass_manager","to_owned","to_smolstr","to_string","try_from","try_into","type_id","upcast","upcast_mut","vzip","Array","BoundedInt","Bytes31","EcPoint","EcState","Enum","Felt252","Felt252Dict","JitValue","Null","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","__clone_box","borrow","borrow_mut","clone","clone_into","deserialize","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt_str","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","into","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","serialize","to_owned","try_from","try_into","type_id","upcast","upcast_mut","vzip","debug_name","debug_name","debug_name","fields","range","tag","value","value","value","x","x","y","y"],"q":[[0,"cairo_native"],[83,"cairo_native::cache"],[110,"cairo_native::cache::aot"],[132,"cairo_native::cache::jit"],[155,"cairo_native::context"],[186,"cairo_native::debug_info"],[242,"cairo_native::error"],[316,"cairo_native::error::SierraAssertError"],[317,"cairo_native::execution_result"],[434,"cairo_native::executor"],[537,"cairo_native::libfuncs"],[632,"cairo_native::libfuncs::ap_tracking"],[636,"cairo_native::libfuncs::array"],[647,"cairo_native::libfuncs::bitwise"],[648,"cairo_native::libfuncs::bool"],[651,"cairo_native::libfuncs::box"],[654,"cairo_native::libfuncs::branch_align"],[655,"cairo_native::libfuncs::bytes31"],[659,"cairo_native::libfuncs::cast"],[662,"cairo_native::libfuncs::const"],[666,"cairo_native::libfuncs::coupon"],[669,"cairo_native::libfuncs::debug"],[671,"cairo_native::libfuncs::drop"],[672,"cairo_native::libfuncs::dup"],[673,"cairo_native::libfuncs::ec"],[684,"cairo_native::libfuncs::enum"],[690,"cairo_native::libfuncs::felt252"],[694,"cairo_native::libfuncs::felt252_dict"],[697,"cairo_native::libfuncs::felt252_dict_entry"],[700,"cairo_native::libfuncs::function_call"],[701,"cairo_native::libfuncs::gas"],[706,"cairo_native::libfuncs::mem"],[712,"cairo_native::libfuncs::nullable"],[713,"cairo_native::libfuncs::pedersen"],[715,"cairo_native::libfuncs::poseidon"],[717,"cairo_native::libfuncs::sint128"],[725,"cairo_native::libfuncs::sint16"],[734,"cairo_native::libfuncs::sint32"],[743,"cairo_native::libfuncs::sint64"],[752,"cairo_native::libfuncs::sint8"],[761,"cairo_native::libfuncs::snapshot_take"],[762,"cairo_native::libfuncs::starknet"],[787,"cairo_native::libfuncs::struct"],[791,"cairo_native::libfuncs::uint128"],[803,"cairo_native::libfuncs::uint16"],[813,"cairo_native::libfuncs::uint256"],[818,"cairo_native::libfuncs::uint32"],[828,"cairo_native::libfuncs::uint512"],[830,"cairo_native::libfuncs::uint64"],[840,"cairo_native::libfuncs::uint8"],[850,"cairo_native::libfuncs::unconditional_jump"],[851,"cairo_native::libfuncs::unwrap_non_zero"],[852,"cairo_native::metadata"],[886,"cairo_native::metadata::debug_utils"],[918,"cairo_native::metadata::enum_snapshot_variants"],[939,"cairo_native::metadata::gas"],[1070,"cairo_native::metadata::gas::GasMetadataError"],[1071,"cairo_native::metadata::prime_modulo"],[1092,"cairo_native::metadata::realloc_bindings"],[1114,"cairo_native::metadata::runtime_bindings"],[1148,"cairo_native::metadata::snapshot_clones"],[1170,"cairo_native::metadata::tail_recursion"],[1194,"cairo_native::module"],[1220,"cairo_native::starknet"],[1683,"cairo_native::starknet_stub"],[1785,"cairo_native::types"],[1865,"cairo_native::types::array"],[1866,"cairo_native::types::bitwise"],[1867,"cairo_native::types::bounded_int"],[1868,"cairo_native::types::box"],[1869,"cairo_native::types::builtin_costs"],[1870,"cairo_native::types::bytes31"],[1871,"cairo_native::types::coupon"],[1872,"cairo_native::types::ec_op"],[1873,"cairo_native::types::ec_point"],[1874,"cairo_native::types::ec_state"],[1875,"cairo_native::types::enum"],[1879,"cairo_native::types::felt252"],[1919,"cairo_native::types::felt252_dict"],[1920,"cairo_native::types::felt252_dict_entry"],[1921,"cairo_native::types::gas_builtin"],[1922,"cairo_native::types::non_zero"],[1923,"cairo_native::types::nullable"],[1924,"cairo_native::types::pedersen"],[1925,"cairo_native::types::poseidon"],[1926,"cairo_native::types::range_check"],[1927,"cairo_native::types::segment_arena"],[1928,"cairo_native::types::snapshot"],[1929,"cairo_native::types::squashed_felt252_dict"],[1930,"cairo_native::types::starknet"],[1937,"cairo_native::types::struct"],[1938,"cairo_native::types::uint128"],[1939,"cairo_native::types::uint128_mul_guarantee"],[1940,"cairo_native::types::uint16"],[1941,"cairo_native::types::uint32"],[1942,"cairo_native::types::uint64"],[1943,"cairo_native::types::uint8"],[1944,"cairo_native::types::uninitialized"],[1945,"cairo_native::utils"],[1999,"cairo_native::values"],[2067,"cairo_native::values::JitValue"],[2080,"dyn_clone::sealed"],[2081,"cairo_native::ffi"],[2082,"core::cmp"],[2083,"melior::context"],[2084,"melior::ir::module"],[2085,"cairo_lang_sierra::program"],[2086,"cairo_lang_sierra::extensions::core"],[2087,"cairo_lang_sierra::program_registry"],[2088,"core::option"],[2089,"core::result"],[2090,"core::fmt"],[2091,"core::hash"],[2092,"alloc::vec"],[2093,"std::path"],[2094,"std::io::error"],[2095,"std::collections::hash::map"],[2096,"alloc::boxed"],[2097,"alloc::collections::vec_deque"],[2098,"smol_str"],[2099,"alloc::string"],[2100,"core::any"],[2101,"cairo_native::executor::aot"],[2102,"alloc::rc"],[2103,"cairo_native::executor::jit"],[2104,"cairo_lang_compiler::db"],[2105,"cairo_lang_diagnostics::diagnostics"],[2106,"cairo_lang_sierra::edit_state"],[2107,"melior::error"],[2108,"core::num::error"],[2109,"core::alloc::layout"],[2110,"cairo_lang_sierra::ids"],[2111,"core::error"],[2112,"serde::de"],[2113,"serde::ser"],[2114,"core::ffi"],[2115,"starknet_types_core::felt"],[2116,"bumpalo"],[2117,"libloading::safe"],[2118,"melior::ir::block"],[2119,"melior::ir::value"],[2120,"melior::ir::location"],[2121,"melior::ir::operation"],[2122,"cairo_lang_sierra::extensions::modules::ap_tracking"],[2123,"cairo_lang_sierra::extensions::lib_func"],[2124,"cairo_lang_sierra::extensions::modules::array"],[2125,"cairo_lang_sierra::extensions::modules::boolean"],[2126,"cairo_lang_sierra::extensions::modules::boxing"],[2127,"cairo_lang_sierra::extensions::modules::bytes31"],[2128,"cairo_lang_sierra::extensions::modules::consts"],[2129,"cairo_lang_sierra::extensions::modules::casts"],[2130,"cairo_lang_sierra::extensions::modules::const_type"],[2131,"cairo_lang_sierra::extensions::modules::coupon"],[2132,"cairo_lang_sierra::extensions::modules::function_call"],[2133,"cairo_lang_sierra::extensions::modules::debug"],[2134,"cairo_lang_sierra::extensions::modules::ec"],[2135,"cairo_lang_sierra::extensions::modules::enm"],[2136,"cairo_lang_sierra::extensions::modules::felt252"],[2137,"cairo_lang_sierra::extensions::modules::felt252_dict"],[2138,"cairo_lang_sierra::extensions::modules::gas"],[2139,"cairo_lang_sierra::extensions::modules::mem"],[2140,"cairo_lang_sierra::extensions::modules::nullable"],[2141,"cairo_lang_sierra::extensions::modules::pedersen"],[2142,"cairo_lang_sierra::extensions::modules::poseidon"],[2143,"cairo_lang_sierra::extensions::modules::int::signed128"],[2144,"cairo_lang_sierra::extensions::modules::int"],[2145,"cairo_lang_sierra::extensions::modules::int::signed"],[2146,"cairo_lang_sierra::extensions::modules::starknet"],[2147,"cairo_lang_sierra::extensions::modules::structure"],[2148,"cairo_lang_sierra::extensions::modules::int::unsigned128"],[2149,"cairo_lang_sierra::extensions::modules::int::unsigned"],[2150,"cairo_lang_sierra::extensions::modules::int::unsigned256"],[2151,"cairo_lang_sierra::extensions::modules::int::unsigned512"],[2152,"core::ops::function"],[2153,"melior::execution_engine"],[2154,"cairo_lang_sierra_ap_change"],[2155,"cairo_lang_sierra_gas"],[2156,"num_bigint::biguint"],[2157,"alloc::sync"],[2158,"melior::ir::type"],[2159,"core::clone"],[2160,"cairo_lang_sierra::extensions::types"],[2161,"cairo_lang_sierra::extensions::modules::bounded_int"],[2162,"num_bigint::bigint"],[2163,"cairo_lang_sierra::extensions::modules::starknet::secp256"],[2164,"core::convert"],[2165,"alloc::borrow"],[2166,"cairo_native::compiler"]],"i":[4,4,0,4,4,0,3,4,3,4,3,4,0,3,4,3,4,4,4,0,0,0,4,4,4,4,4,4,4,0,0,0,3,3,4,3,4,4,4,4,3,4,0,0,0,0,0,4,3,3,3,3,3,3,3,4,4,4,4,4,4,4,0,0,3,4,3,3,3,4,3,4,3,4,0,3,4,3,4,0,0,3,4,34,0,34,0,0,0,34,34,34,34,34,34,34,0,34,34,34,34,34,34,34,34,34,34,34,34,34,0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,0,0,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,47,47,47,47,47,47,13,13,13,13,13,13,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,47,13,50,15,15,87,0,15,15,15,15,15,15,15,15,15,87,15,15,50,0,15,0,15,15,15,50,15,50,15,15,50,50,15,15,15,15,15,15,15,15,50,15,50,15,15,15,15,15,15,15,15,50,50,50,50,50,50,50,15,15,50,15,50,15,50,15,50,15,50,15,50,15,50,15,50,212,0,0,0,60,61,62,60,60,61,62,60,61,62,61,60,61,62,60,61,62,60,62,60,62,60,62,60,61,62,60,60,61,62,60,60,60,60,60,61,61,61,61,61,62,62,62,62,62,62,62,60,61,62,60,61,62,62,60,62,60,61,62,60,62,60,60,60,61,62,61,62,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,60,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,60,61,62,65,0,0,65,0,0,65,44,71,41,65,44,71,41,65,65,65,44,41,44,41,65,44,71,41,65,65,65,44,41,44,71,41,65,44,41,65,71,44,41,65,44,41,65,44,71,41,44,71,71,44,44,44,44,44,44,44,71,71,71,71,71,71,71,41,41,41,41,41,41,41,65,65,65,65,65,65,65,65,44,71,41,65,44,71,41,65,44,71,41,65,44,71,41,65,44,71,41,65,44,71,41,65,0,84,85,0,0,85,85,0,78,0,0,0,78,85,78,85,0,78,0,84,0,0,85,85,78,0,0,0,78,0,0,0,0,0,0,0,85,78,85,0,0,0,78,78,85,84,0,0,0,0,78,78,78,78,78,78,78,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,78,85,78,85,78,85,78,85,0,0,0,0,0,0,0,0,0,78,85,78,85,78,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,12,0,12,12,0,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,0,0,0,12,12,12,12,12,12,0,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,0,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,51,51,0,0,0,0,51,76,153,46,76,76,153,46,51,76,153,46,51,76,153,46,76,153,46,153,153,76,46,76,153,51,76,76,76,76,76,153,153,153,153,153,51,51,51,51,51,76,153,46,51,51,76,153,46,51,51,51,46,76,76,76,76,153,76,76,153,46,51,46,46,76,153,76,76,76,76,76,76,76,153,153,153,153,153,153,153,46,46,46,46,46,46,46,51,51,51,51,51,51,51,51,76,153,46,51,51,76,153,46,51,76,153,46,51,76,153,46,51,76,153,46,51,76,153,46,51,76,153,46,51,213,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,0,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,0,0,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,0,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,0,171,0,0,0,171,0,0,0,0,0,0,0,0,0,169,173,174,175,176,177,178,179,180,181,176,179,176,174,175,178,178,172,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,0,70,172,174,175,170,176,179,70,169,173,174,175,176,177,178,179,180,181,169,173,174,175,176,177,178,179,180,181,173,174,175,176,177,178,179,173,174,175,176,177,178,179,174,175,173,70,172,173,174,175,176,177,178,179,70,172,174,175,173,174,175,176,177,178,179,180,181,173,173,173,173,173,174,174,174,174,174,175,175,175,175,175,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,180,180,180,180,180,181,181,181,181,181,176,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,70,172,70,172,70,172,173,174,175,176,177,178,179,180,181,173,172,170,169,173,174,175,176,177,178,179,180,181,70,172,70,172,173,177,176,179,177,176,179,176,173,174,175,176,177,178,179,176,170,70,172,177,176,172,172,172,172,172,172,172,170,170,170,170,170,170,170,169,169,169,169,169,169,169,173,173,173,173,173,173,173,174,174,174,174,174,174,174,175,175,175,175,175,175,175,176,176,176,176,176,176,176,177,177,177,177,177,177,177,178,178,178,178,178,178,178,179,179,179,179,179,179,179,180,180,180,180,180,180,180,181,181,181,181,181,181,181,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,70,172,178,173,174,175,176,177,178,179,176,179,170,70,172,70,172,176,169,173,174,175,176,177,178,179,180,181,176,179,172,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,174,175,172,170,169,173,174,175,176,177,178,179,180,181,170,172,170,169,173,174,175,176,177,178,179,180,181,172,170,169,173,174,175,176,177,178,179,180,181,176,179,172,170,169,173,174,175,176,177,178,179,180,181,180,181,180,181,0,0,0,183,184,185,183,184,185,183,184,185,183,183,183,184,185,183,184,185,184,183,185,183,183,183,185,183,183,184,185,183,184,185,183,183,183,183,184,185,183,184,185,183,183,183,183,183,183,183,183,183,183,184,184,184,184,184,184,184,185,185,185,185,185,185,185,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,184,185,183,184,185,183,184,185,183,184,185,183,184,185,183,184,185,183,184,185,187,0,0,186,0,186,0,186,186,0,0,187,187,187,0,0,186,186,0,186,0,0,0,0,186,186,186,186,186,186,0,0,0,187,186,186,0,186,187,186,187,187,187,187,187,187,186,0,0,0,0,0,186,186,186,186,186,186,186,0,186,0,0,0,0,186,186,186,186,0,0,0,0,0,0,0,186,186,187,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,198,197,198,0,197,198,197,198,197,198,0,197,197,197,197,197,197,197,198,198,198,198,198,198,198,197,198,197,198,197,198,197,198,197,198,197,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,203,203,0,0,52,52,0,0,52,52,52,52,52,52,0,0,0,0,0,0,52,52,52,0,0,52,0,0,0,0,0,52,52,52,52,52,52,52,0,52,52,52,52,52,52,52,52,52,73,73,73,73,73,73,73,73,0,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,214,215,216,214,217,215,215,216,217,218,219,218,219],"f":"``````{{cb}d{}}0{ce{}{}}000`{ff}{hh}{{ce}d{}{}}0{{hh}j}{{ce}j{}{}}{{lnA`{Af{AbAd}}Ah{Al{Aj}}}{{B`{dAn}}}}``{{}h}{{hh}Bb}{{ce}Bb{}{}}0000```{{fBd}Bf}0{{hBd}Bf}{cc{}}{Bhh}1{Bjh}{{hc}dBl}??```{{nh}{{B`{{Bn{Bh}}f}}}}{{{C`{Bh}}Cb}{{B`{dCd}}}}{{hh}{{Al{j}}}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}3210465``{ce{}{}}0{cCn{}}{cD`{}}{c{{B`{e}}}{}{}}000{cDb{}}0`4444``44``````44{{{Dd{c}}Bd}Bf{DfDhDjDl}}{{{Dn{c}}}{{Dd{c}}}{DfDhDj}}{{{E`{c}}}{{Dd{c}}}{DfDhDj}}{cc{}}8`=?9:;<>554888`88{{{E`{c}}cA`h}{{Ed{Eb}}}{DfDhDj}}{{{E`{c}}Bd}Bf{DfDhDj}}2{{{E`{c}}c}{{Al{{Ed{Eb}}}}}{DfDhDj}};{Ef{{E`{c}}}{DfDhDj}}={{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}??>{ce{}{}}00`00{{{Dn{c}}cA`h}{{Ed{Eh}}}{DhDjDf}}{{{Dn{c}}}Ef{DhDjDf}}{{{Dn{c}}Bd}Bf{DhDjDf}}>{{{Dn{c}}c}{{Al{{Ed{Eh}}}}}{DhDjDf}}4{Ef{{Dn{c}}}{DhDjDf}}9{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}987<;{c{{B`{e}}}{}{}}0{cDb{}}888`88{{EfA`{Al{Aj}}}{{B`{EjAn}}}}{{EfA`El}{{B`{EjAn}}}}{Efl}{{}Ef}{{EfEf}Bb}{{ce}Bb{}{}}0000{{EfBd}Bf}{cc{}}{{}l}{ce{}{}}6{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}>{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{c{{B`{e}}}{}{}}0{cDb{}}888``{{cb}d{}}09999{EnEn}{AjAj}{{ce}d{}{}}0{{F`A`}{{B`{EnFb}}}}{{lF`En}Aj}{{EnBd}Bf}{{AjBd}Bf}{cc{}}0``{ce{}{}}0``>{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}?{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}20{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}356``77{c{{B`{e}}}{}{}}000``{cDb{}}0999999```````````````````````9999{{AnBd}Bf}0{{FdBd}Bf}0{FfAn}{FhAn}>{FjAn}{FlAn}{{{Ch{Fn}}}An}{G`An}{GbAn}{cc{}}{ce{}{}}0{GdAn}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}6012345{An{{Al{Gf}}}}{cCn{}}0{cD`{}}0{c{{B`{e}}}{}{}}000{cDb{}}0======````{{cb}d{}}00`>>>>>>`{GhGh}{GjGj}{GlGl}{{ce}d{}{}}00{{GhGh}j}{{GlGl}j}{{ce}j{}{}}0{{}Gh}{{}Gl}{c{{B`{Gh}}}Gn}{c{{B`{Gj}}}Gn}{c{{B`{Gl}}}Gn}`{{GhGh}Bb}{{GjGj}Bb}{{GlGl}Bb}{{ce}Bb{}{}}00000000000000``{{GhBd}Bf}{{GjBd}Bf}{{GlBd}Bf}{cc{}}00{Gj{{B`{GlAn}}}}{{Ghc}dBl}{{Glc}dBl}{ce{}{}}00{{GhGh}{{Al{j}}}}{{GlGl}{{Al{j}}}}```````{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}51046320365412`{{Ghc}B`H`}{{Gjc}B`H`}{{Glc}B`H`}<<<{c{{B`{e}}}{}{}}00000{cDb{}}00>>>>>>>>>``````{{cb}d{}}????????{HbHb}{{ce}d{}{}}{{EhHd}Hf}{{EbHd}Hf}{{EhBd}Bf}{{EbBd}Bf}{{HbBd}Bf}{cc{}}00{EhHb}1{EbHb}{{Ejh}Eh}{{Ejh}Eb}{ce{}{}}000{{EhHd{C`{Hh}}{Al{Hj}}c}{{B`{GlAn}}}Hl}{{EbHd{C`{Hh}}{Al{Hj}}c}{{B`{GlAn}}}Hl}{{HbHd{C`{Hh}}{Al{Hj}}c}{{B`{GlAn}}}Hl}{Hn{{C`{I`}}}}{{EhHd{C`{Ib}}{Al{Hj}}}{{B`{GjAn}}}}{{EbHd{C`{Ib}}{Al{Hj}}}{{B`{GjAn}}}}{{HbHd{C`{Ib}}{Al{Hj}}}{{B`{GjAn}}}}{{EhHd{C`{Ib}}{Al{Hj}}c}{{B`{GjAn}}}Hl}{{EbHd{C`{Ib}}{Al{Hj}}c}{{B`{GjAn}}}Hl}{{HbHd{C`{Ib}}{Al{Hj}}c}{{B`{GjAn}}}Hl}{Ehn}{{Id{Af{AbAd}}}Hn}{{If{Af{AbAd}}Ih}Eb}{Eh{{Af{AbAd}}}}{{HnGdIjIb}{{B`{d{Ch{Fn}}}}}}{{HnBj{C`{I`}}}d}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}132054632160454035612{ce{}{}}{c{{B`{e}}}{}{}}0000000{cDb{}}000222222222222``````{{cb}d{}}`{{IlIn}In}```4444`{{IlBj{C`{J`}}Jb}Jd}`{{{Jh{}{{Jf{c}}}}l{Af{AbAd}}InJbIlAh}{{B`{dc}}}Gf}``{JjJj}{{ce}d{}{}}{{IllJ`{Jl{Bj}}{Jl{{C`{J`}}}}Jb}Jd}```{Ilc{}}```````{{JjBd}Bf}{cc{}}0``{{lInJbJ`}{{Jn{J`}}}}{IlIn}>>{{{Jh{}{{Jf{c}}}}}{{Al{Hd}}}Gf}````{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}3560124````````{{IllJ`{Cj{Jj{C`{J`}}}}{C`{{Cj{K`Jj{C`{J`}}}}}}Jb}{{B`{JdAn}}}}{ce{}{}}{c{{B`{e}}}{}{}}000{cDb{}}0`````````222222{{l{Af{AbAd}}InJbIlAhKb}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}00{{l{Af{AbAd}}InJbIlAhKf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKh}{{Jn{d}}}}0020000002{{l{Af{AbAd}}InJbIlAhKj}{{Jn{d}}}}33{{l{Af{AbAd}}InJbIlAhKl}{{Jn{d}}}}224{{l{Af{AbAd}}InJbIlAhKn}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhL`}{{Jn{d}}}}66{{l{Af{AbAd}}InJbIlAhLb}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLd}{{Jn{d}}}}8{{l{Af{AbAd}}InJbIlAhLf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLj}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhLl}{{Jn{J`}}}}{{l{Af{AbAd}}InJbIlAhLn}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhM`}{{Jn{d}}}}0{{l{Af{AbAd}}InJbIlAhMb}{{Jn{d}}}}???{{l{Af{AbAd}}InJbIlAhMd}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}000000000{{l{Af{AbAd}}InJbIlAhMf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhJ`GdGdBj}{{Jn{J`}}}}{{l{Af{AbAd}}InJbIlAhMh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhMj}{{Jn{d}}}}44{{l{Af{AbAd}}InJbIlAhMl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhMn}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhN`}{{Jn{d}}}}7{{l{Af{AbAd}}InJbIlAhNb}{{Jn{d}}}}88{{l{Af{AbAd}}InJbIlAhNd}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKh}{{Jn{d}}}}0={{l{Af{AbAd}}InJbIlAhNf}{{Jn{d}}}};;;;{{l{Af{AbAd}}InJbIlAhNh}{{Jn{d}}}}2{{l{Af{AbAd}}InJbIlKd}{{Jn{d}}}}03{{l{Af{AbAd}}InJbIlKh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhNj}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhNl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhNn}{{Jn{d}}}}1{{l{Af{AbAd}}InJbIlAhO`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{Ob}}}{{Jn{d}}}}7737{{l{Af{AbAd}}InJbIlOf}{{Jn{d}}}}4{{l{Af{AbAd}}InJbIlAhOh}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{Oj}}}{{Jn{d}}}}::6:266{{l{Af{AbAd}}InJbIlAhOl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{On}}}{{Jn{d}}}}<<8<488{{l{Af{AbAd}}InJbIlAhA@`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{A@b}}}{{Jn{d}}}}>>:>6::{{l{Af{AbAd}}InJbIlAhA@d}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{A@f}}}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlKd}{{Jn{d}}}}0=09==={{l{Af{AbAd}}InJbIlAhA@h}{{Jn{d}}}}>{{l{Af{AbAd}}InJbIlAhL`}{{Jn{d}}}}??0???????????????0???{{l{Af{AbAd}}InJbIlAhA@j}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}0{{l{Af{AbAd}}InJbIlAhGd{C`{J`}}}{{Jn{J`}}}}{{l{Af{AbAd}}InJbIlAhA@l}{{Jn{d}}}}2{{l{Af{AbAd}}InJbIlAh{Od{A@n}}}{{Jn{d}}}}333333{{l{Af{AbAd}}InJbIlAhOf}{{Jn{d}}}}44{{l{Af{AbAd}}InJbIlAhAA`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{AAb}}}{{Jn{d}}}}::6:{{l{Af{AbAd}}InJbIlOf}{{Jn{d}}}}777{{l{Af{AbAd}}InJbIlAhAAd}{{Jn{d}}}}8888{{l{Af{AbAd}}InJbIlAhAAf}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{AAh}}}{{Jn{d}}}}>>:>3:::{{l{Af{AbAd}}InJbIlAhAAj}{{Jn{d}}}};{{l{Af{AbAd}}InJbIlAhAAl}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{AAn}}}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlKd}{{Jn{d}}}}0>07>>>{{l{Af{AbAd}}InJbIlAhAB`}{{Jn{d}}}}{{l{Af{AbAd}}InJbIlAh{Od{ABb}}}{{Jn{d}}}}22{{l{Af{AbAd}}InJbIlAhKd}{{Jn{d}}}}3:00000`{ce{}{}}0`{{}Ah}`{{AhBd}Bf}{cc{}}`{Ah{{Al{c}}}ABd}0{{Ahe}cABd{{ABh{}{{ABf{c}}}}}}{{Ahc}{{Al{c}}}ABd}65``2{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}```{c{{B`{e}}}{}{}}0{cDb{}}???`??{{ABjlnInJb}{{Jn{d}}}}{{ABjInJb}{{Jn{d}}}}{{ABjlnInABlJb}{{Jn{d}}}}{{}ABj}{{ABjlnInJ`BjJb}{{Jn{d}}}}{{ABjBd}Bf}{cc{}}{ce{}{}}{{ABjlnInJ`Jb}{{Jn{d}}}}000000{{ABjABn}d}<{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{c{{B`{e}}}{}{}}0{cDb{}}:::`::{{}AC`}<{{AC`Gd}{{Al{{Bn{Gd}}}}}}<56784{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}:{{AC`Gd{Al{{C`{Gd}}}}}d}554>>>```````{{cb}d{}}00`????????{IhIh}{ACbACb}{ElEl}{{ce}d{}{}}00{{ACbACb}j}{{ce}j{}{}}{{}Ih}{{}El}{{IhIh}Bb}{{ACbACb}Bb}{{FfFf}Bb}{{ce}Bb{}{}}00000000000000{{IhBd}Bf}{{ACbBd}Bf}{{ElBd}Bf}{{FfBd}Bf}0{cc{}}00{ACdFf}1{ACfFf}``{{IhACh}{{Al{Hj}}}}{{IhAChACj}{{Al{Hj}}}}{{IhHd{Al{Hj}}}{{B`{HjFf}}}}{{ACbc}dBl}{{IhHd}{{Al{Hj}}}}{ce{}{}}000``{{A`{Al{El}}}{{B`{IhFf}}}}{{ACbACb}{{Al{j}}}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}254310643210650651234{Ff{{Al{Gf}}}}:::{cCn{}}{cD`{}}{c{{B`{e}}}{}{}}0000000{cDb{}}000>>>>>>>>>>>>``>>{{{ACl{c}}Bd}BfDl}{cc{}}{ce{}{}}{ACn{{ACl{c}}}{}}{{{ACl{c}}}ACn{}};:{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}>?{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}998555`55{{AD`Bd}Bf}{{lJ`Jb}Jd}87{{ln}AD`}{{lJ`J`Jb}Jd}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}675{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{c{{B`{e}}}{}{}}0{cDb{}}???`??{{}ADb}{{ADblnJ`InJb}{{Jn{ADd}}}}{{ADblnInJb}{{Jn{ADd}}}}{{ADblnInJ`Jb}{{Jn{ADd}}}}{{ADblnInJ`J`Jb}{{Jn{ADd}}}}{{ADblnInJ`J`J`Jb}{{Jn{ADd}}}}{{ADbBd}Bf}{cc{}}{ce{}{}}{{ADblnInJ`J`J`Jb}{{Jn{J`}}}}6654544?{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}?>{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}??>55{{ADblnInJbJ`J`J`}{{Jn{ADd}}}}6``66{{}ADf}87{{ADfGd{ADh{c}}c}d{}}43{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}98{c{{B`{e}}}{}{}}0{cDb{}}==={{ADfGd}{{Al{{ADl{ADj}}}}}}`>>{ADnJ`}{{ADnBd}Bf}{cc{}}{ce{}{}}{{J`In}ADn}{ADnAE`}{ADn{{Al{AE`}}}}:{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}=>{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{ADnIn}d}>>=888`88{{EjBd}Bf}:{Ej{{Al{c}}}ABd}{{Ejc}{{Al{c}}}ABd};{EjAh}{Ejn}{{n{Af{AbAd}}Ah}Ej}{Ej{{Af{AbAd}}}}58:;{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}<{c{{B`{e}}}{}{}}0{cDb{}}{ce{}{}}00`````````````````{{cb}d{}}000000000```````111111111111111111111111{{{AEd{AEb}}AEb{AEd{AEb}}}d}{{HlHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}{{AEhHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}`````{{HlHh{C`{Hh}}}{{Bn{Hh}}}}{AEbAEb}{AEjAEj}{AElAEl}{AEnAEn}{AF`AF`}{AFbAFb}{AFdAFd}{AFfAFf}{AFhAFh}{AFjAFj}{{ce}d{}{}}000000000{{AEjAEj}j}{{AElAEl}j}{{AEnAEn}j}{{AF`AF`}j}{{AFbAFb}j}{{AFdAFd}j}{{AFfAFf}j}{{ce}j{}{}}000000``{{}AEj}{{HlHhHh{C`{Hh}}BbHj}{{AEf{{Cj{Hh{Bn{Hh}}}}}}}}{{AEhHhHh{C`{Hh}}BbHj}{{AEf{{Cj{Hh{Bn{Hh}}}}}}}}{c{{B`{AEj}}}Gn}{c{{B`{AEl}}}Gn}{c{{B`{AEn}}}Gn}{c{{B`{AF`}}}Gn}{c{{B`{AFb}}}Gn}{c{{B`{AFd}}}Gn}{c{{B`{AFf}}}Gn}{{Hl{C`{Hh}}{C`{Hh}}Hj}{{AEf{d}}}}{{AEh{C`{Hh}}{C`{Hh}}Hj}{{AEf{d}}}}``{{AEjAEj}Bb}{{AElAEl}Bb}{{AEnAEn}Bb}{{AF`AF`}Bb}{{AFbAFb}Bb}{{AFdAFd}Bb}{{AFfAFf}Bb}{{AFhAFh}Bb}{{AFjAFj}Bb}{{ce}Bb{}{}}00000000000000000000000000000000000000000000`{{{AEd{c}}Bd}BfDl}{{AEbBd}Bf}{{AEjBd}Bf}{{AElBd}Bf}{{AEnBd}Bf}{{AF`Bd}Bf}{{AFbBd}Bf}{{AFdBd}Bf}{{AFfBd}Bf}{{AFhBd}Bf}{{AFjBd}Bf}{cc{}}00000000000{{HlI`Hj}{{AEf{Hh}}}}{{AEhI`Hj}{{AEf{Hh}}}}{{HlHj}{{AEf{AEl}}}}{{AEhHj}{{AEf{AEl}}}}{{HlHj}{{AEf{AEn}}}}{{AEhHj}{{AEf{AEn}}}}{{AEjc}dBl}{{AElc}dBl}{{AEnc}dBl}{{AF`c}dBl}{{AFbc}dBl}{{AFdc}dBl}{{AFfc}dBl}{{AFhc}dBl}{{AFjc}dBl}`{ce{}{}}00000000000{{Hl{C`{I`}}Hj}{{AEf{AEj}}}}{{AEh{C`{I`}}Hj}{{AEf{AEj}}}}{{HlHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}{{AEhHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}````````{{AEjAEj}{{Al{j}}}}{{AElAEl}{{Al{j}}}}{{AEnAEn}{{Al{j}}}}{{AF`AF`}{{Al{j}}}}{{AFbAFb}{{Al{j}}}}{{AFdAFd}{{Al{j}}}}{{AFfAFf}{{Al{j}}}}``{{HlHhHj}{{AEf{d}}}}{{AEhHhHj}{{AEf{d}}}}``{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}53401265321406012345630124650654321546032101234566543210506432154012366543210{{HlAFhAFhHj}{{AEf{AFh}}}}{{AEhAFhAFhHj}{{AEf{AFh}}}}{{HlAEjBbHj}{{AEf{{Al{AFh}}}}}}{{AEhAEjBbHj}{{AEf{{Al{AFh}}}}}}{{HlAFhHj}{{AEf{{Cj{AEjAEj}}}}}}{{AEhAFhHj}{{AEf{{Cj{AEjAEj}}}}}}{{HlAFhAEjHj}{{AEf{AFh}}}}{{AEhAFhAEjHj}{{AEf{AFh}}}}{{HlAEjAEjHj}{{AEf{{Al{AFh}}}}}}{{AEhAEjAEjHj}{{AEf{{Al{AFh}}}}}}{{HlAFjAFjHj}{{AEf{AFj}}}}{{AEhAFjAFjHj}{{AEf{AFj}}}}{{HlAEjBbHj}{{AEf{{Al{AFj}}}}}}{{AEhAEjBbHj}{{AEf{{Al{AFj}}}}}}{{HlAFjHj}{{AEf{{Cj{AEjAEj}}}}}}{{AEhAFjHj}{{AEf{{Cj{AEjAEj}}}}}}{{HlAFjAEjHj}{{AEf{AFj}}}}{{AEhAFjAEjHj}{{AEf{AFj}}}}{{HlAEjAEjHj}{{AEf{{Al{AFj}}}}}}{{AEhAEjAEjHj}{{AEf{{Al{AFj}}}}}}{{HlHh{C`{Hh}}Hj}{{AEf{d}}}}{{AEhHh{C`{Hh}}Hj}{{AEf{d}}}}`{{AEjc}B`H`}{{AElc}B`H`}{{AEnc}B`H`}{{AF`c}B`H`}{{AFbc}B`H`}{{AFdc}B`H`}{{AFfc}B`H`}```{{HlAFlHhHj}{{AEf{Hh}}}}{{AEhAFlHhHj}{{AEf{Hh}}}}{{HlAFlHhHhHj}{{AEf{d}}}}{{AEhAFlHhHhHj}{{AEf{d}}}}`{ce{}{}}000000000``{c{{B`{e}}}{}{}}00000000000000000000000``{cDb{}}00000000000`222222222222222222222222``222222222222```````{{cb}d{}}00333333{{AFnHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}{{AFnHh{C`{Hh}}}{{Bn{Hh}}}}{AFnAFn}{AG`AG`}{AGbAGb}{{ce}d{}{}}00`{{}AFn}{{}AGb}{{AFnHhHh{C`{Hh}}BbHj}{{AEf{{Cj{Hh{Bn{Hh}}}}}}}}{{AFn{C`{Hh}}{C`{Hh}}Hj}{{AEf{d}}}}```{{AFnBd}Bf}{{AG`Bd}Bf}{{AGbBd}Bf}{cc{}}00{{AFnI`Hj}{{AEf{Hh}}}}{{AFnHj}{{AEf{AEl}}}}{{AFnHj}{{AEf{AEn}}}}{ce{}{}}00{{AFn{C`{I`}}Hj}{{AEf{AEj}}}}``{{AFnHhHh{C`{Hh}}Hj}{{AEf{{Bn{Hh}}}}}}`{{AFnHhHj}{{AEf{d}}}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}02364154653201{{AFnAFhAFhHj}{{AEf{AFh}}}}{{AFnAEjBbHj}{{AEf{{Al{AFh}}}}}}{{AFnAFhHj}{{AEf{{Cj{AEjAEj}}}}}}{{AFnAFhAEjHj}{{AEf{AFh}}}}{{AFnAEjAEjHj}{{AEf{{Al{AFh}}}}}}{{AFnAFjAFjHj}{{AEf{AFj}}}}{{AFnAEjBbHj}{{AEf{{Al{AFj}}}}}}{{AFnAFjHj}{{AEf{{Cj{AEjAEj}}}}}}{{AFnAFjAEjHj}{{AEf{AFj}}}}{{AFnAEjAEjHj}{{AEf{{Al{AFj}}}}}}{{AFnHh{C`{Hh}}Hj}{{AEf{d}}}}`{{AFnAFlHhHj}{{AEf{Hh}}}}{{AFnAFlHhHhHj}{{AEf{d}}}}{ce{}{}}00{c{{B`{e}}}{}{}}00000{cDb{}}00222222222```{{cb}d{}}`{{{AGd{c}}}c{}}`44``{{{AGf{}{{Jf{c}}}}ln{Af{AbAd}}AhGd}{{B`{AGhc}}}Gf}{{{AGf{}{{Jf{c}}}}l{Af{AbAd}}InJbIlAhGd}{{B`{J`c}}}Gf}{{{AGf{}{{Jf{c}}}}l{Af{AbAd}}InJbIlAhGd}{{B`{dc}}}Gf}``{{{AGd{c}}}{{AGd{c}}}AGj}{{ce}d{}{}}`5````{{{AGd{c}}{AGd{c}}}BbDf}{{ce}Bb{}{}}0000```{{{AGf{}{{Jf{c}}}}}{{Al{{C`{Gd}}}}}Gf}{{{AGd{c}}Bd}BfDl}{cc{}}`{{{AGd{c}}e}dDjBl}{{{AGf{}{{Jf{c}}}}}{{Al{Bj}}}Gf}{ce{}{}}{{{AGf{}{{Jf{c}}}}}BbGf}{{{AGf{}{{Jf{c}}}}{Af{AbAd}}}BbGf}{{{AGf{}{{Jf{c}}}}}{{Al{Bb}}}Gf}11{{{AGf{}{{Jf{c}}}}{Af{AbAd}}}{{B`{AGlc}}}Gf}{{Gdc}{{AGd{c}}}{}}`````{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}`{{{AGd{c}}}Gd{}}````={c{{B`{e}}}{}{}}0{cDb{}}```````??{{{AGf{}{{Jf{c}}}}}{{Al{{C`{Gd}}}}}Gf}{ce{}{}}{{ln{Af{AbAd}}Ah{AGd{AGn}}}{{Jn{AGh}}}}{{ln{Af{AbAd}}Ah{AGd{AH`}}}{{Jn{AGh}}}}{{ln{Af{AbAd}}Ah{AGd{AHb}}}{{Jn{AGh}}}}21{{ln{Af{AbAd}}AhAH`}{{Jn{AGh}}}}{{ln{Af{AbAd}}Ah{AGd{AHd}}}{{Jn{AGh}}}}333`{{ln{Af{AbAd}}Ah{AGd{AHf}}}{{Jn{AGh}}}}{{{Af{AbAd}}{C`{Gd}}}{{Jn{{Cj{AGlAGl{Bn{AGl}}}}}}}}{{ln{Af{AbAd}}Ah{C`{Gd}}}{{Jn{{Cj{AGlAHh{Bn{AHh}}}}}}}}``88886{AHjACn}{AHlAHn}{cc{}}0;;{Ah{{ACl{Hh}}}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}3012654{c{{B`{e}}}{}{}}000{cDb{}}0{ce{}{}}00000{{ln{Af{AbAd}}Ah{AGd{AGn}}}{{Jn{AGh}}}}0{{ln{Af{AbAd}}Ah{AGd{AH`}}}{{Jn{AGh}}}}11000011{{ln{Af{AbAd}}Ah{AGd{AI`}}}{{Jn{AGh}}}}11{{ln{Af{AbAd}}Ah{AGd{AIb}}}{{Jn{AGh}}}}222{{ln{Af{AbAd}}Ah{AGd{AId}}}{{Jn{AGh}}}}3333334```{{cb}d{}}66{{AIfln{Af{AbAd}}AhGd}{{B`{AGhAn}}}}{{AIfln{Af{AbAd}}AhGd}{{B`{{Cj{AGhAGl}}An}}}}{Cb{{ADl{A`}}}}{{lCb}{{B`{{Cj{A`Aj}}An}}}}{FhFh}{{ce}d{}{}}{{nAhh}ABn}{c{{`{Dl}}}{{ADj{Bd}{{ABf{Bf}}}}}}{{FhFh}Bb}{{ce}Bb{}{}}0000{c{{Jl{AFl}}}{{AIh{AHn}}}}{ABl{{Jl{AFl}}}}0{{A`ABl}{{Al{{AIj{ACh}}}}}}{{A`Bj}{{Al{{AIj{ACh}}}}}}{{A`ABl}Hd}{{FhBd}Bf}0{cc{}}{Hd{{AIl{ABl}}}}{AFlAGl}{ce{}{}}{{AGlBj}{{B`{{Cj{AGlBj}}Fh}}}}{{AFlAFl}AFl}{{BjBj}Bj}{{AGlBj}Bj}{ABnd}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{ln}{{B`{dFl}}}}={cCn{}}{cD`{}}{c{{B`{e}}}{}{}}0{cDb{}}{ce{}{}}00```````````````````````{{cb}d{}}11{IbIb}{{ce}d{}{}}{c{{B`{Ib}}}Gn}{{IbIb}Bb}{{ce}Bb{}{}}0000{ABlIb}{{IbBd}Bf}{{{Jl{c}}}Ib{{AIh{Ib}}}}{cc{}}{AInIb}{AJ`Ib}{I`Ib}{{{Bn{c}}}Ib{{AIh{Ib}}}}{BhIb}{AJbIb}{HhIb}{AJdIb}{{{C`{c}}}Ib{{AIh{Ib}}AGj}}{AFlIb}{K`Ib}{AJfIb}{HjIb}{ce{}{}}{{c{Ch{e}}}{{B`{{Ch{e}}g}}}{}{}{}}{{c{Al{e}}}{{B`{{Al{e}}g}}}{}{}{}}{{c{Cf{eg}}}{{B`{{Cf{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{B`{{Bn{e}}g}}}{}{}{}}{{c{Cl{e}}}{{B`{{Cl{e}}g}}}{}{}{}}{{c{Cj{eg}}}{{B`{{Cj{eg}}i}}}{}{}{}{}}{{c{B`{eg}}}{{B`{{B`{eg}}i}}}{}{}{}{}}{{Ibc}B`H`}8{c{{B`{e}}}{}{}}0{cDb{}}:::`````````````","D":"DBb","p":[[5,"Private",2080],[1,"unit"],[5,"LLVMCompileError",0,2081],[6,"OptLevel",0,2081],[6,"Ordering",2082],[5,"Context",2083],[5,"Module",2084],[5,"Program",2085],[6,"CoreType",2086],[6,"CoreLibfunc",2086],[5,"ProgramRegistry",2087],[5,"MetadataStorage",852],[5,"DebugLocations",186],[6,"Option",2088],[6,"Error",242],[6,"Result",2089],[1,"bool"],[5,"Formatter",2090],[8,"Result",2090],[1,"u8"],[1,"usize"],[10,"Hasher",2091],[5,"Vec",2092],[1,"slice"],[5,"Path",2093],[5,"Error",2094],[5,"HashMap",2095],[5,"Box",2096],[1,"tuple"],[5,"VecDeque",2097],[5,"SmolStr",2098],[5,"String",2099],[5,"TypeId",2100],[6,"ProgramCache",83],[10,"PartialEq",2082],[10,"Eq",2082],[10,"Hash",2091],[10,"Debug",2090],[5,"JitProgramCache",132],[5,"AotProgramCache",110],[5,"AotNativeExecutor",434,2101],[5,"Rc",2102],[5,"NativeContext",155],[5,"JitNativeExecutor",434,2103],[5,"NativeModule",1194],[5,"MetadataComputationConfig",939],[5,"DebugInfo",186],[5,"RootDatabase",2104],[5,"DiagnosticAdded",2105],[6,"SierraAssertError",242],[6,"GasMetadataError",939],[5,"LayoutError",1945],[6,"EditStateError",2106],[6,"Error",2107],[6,"ProgramRegistryError",2087],[5,"TryFromIntError",2108],[5,"LayoutError",2109],[5,"ConcreteTypeId",2110],[10,"Error",2111],[5,"BuiltinStats",317],[5,"ExecutionResult",317],[5,"ContractExecutionResult",317],[10,"Deserializer",2112],[10,"Serializer",2113],[6,"NativeExecutor",434],[5,"FunctionId",2110],[6,"c_void",2114],[5,"Felt",2115],[1,"u128"],[10,"StarknetSyscallHandler",1220],[5,"ArgumentMapper",434],[1,"u64"],[6,"JitValue",1999],[5,"Bump",2116],[5,"Library",2117],[5,"GasMetadata",939],[6,"CoreTypeConcrete",2086],[5,"LibfuncHelper",537],[5,"Block",2118],[5,"Value",2119],[5,"Location",2120],[5,"Operation",2121],[17,"Error"],[10,"LibfuncBuilder",537],[6,"BranchTarget",537],[1,"array"],[8,"Result",242],[1,"i64"],[6,"ApTrackingConcreteLibfunc",2122],[5,"SignatureOnlyConcreteLibfunc",2123],[6,"ArrayConcreteLibfunc",2124],[5,"SignatureAndTypeConcreteLibfunc",2123],[6,"BoolConcreteLibfunc",2125],[6,"BoxConcreteLibfunc",2126],[6,"Bytes31ConcreteLibfunc",2127],[5,"SignatureAndConstConcreteLibfunc",2128],[6,"CastConcreteLibfunc",2129],[5,"DowncastConcreteLibfunc",2129],[6,"ConstConcreteLibfunc",2130],[5,"ConstAsBoxConcreteLibfunc",2130],[5,"ConstAsImmediateConcreteLibfunc",2130],[5,"ConstConcreteType",2130],[6,"CouponConcreteLibfunc",2131],[5,"SignatureAndFunctionConcreteLibfunc",2132],[6,"DebugConcreteLibfunc",2133],[6,"EcConcreteLibfunc",2134],[6,"EnumConcreteLibfunc",2135],[5,"EnumFromBoundedIntConcreteLibfunc",2135],[5,"EnumInitConcreteLibfunc",2135],[6,"Felt252Concrete",2136],[6,"Felt252BinaryOperationConcrete",2136],[5,"Felt252ConstConcreteLibfunc",2136],[6,"Felt252DictConcreteLibfunc",2137],[6,"Felt252DictEntryConcreteLibfunc",2137],[6,"GasConcreteLibfunc",2138],[6,"MemConcreteLibfunc",2139],[6,"NullableConcreteLibfunc",2140],[6,"PedersenConcreteLibfunc",2141],[6,"PoseidonConcreteLibfunc",2142],[6,"Sint128Concrete",2143],[5,"Sint128Traits",2143],[5,"IntConstConcreteLibfunc",2144],[5,"IntOperationConcreteLibfunc",2144],[8,"Sint16Concrete",2145],[5,"Sint16Traits",2145],[8,"Sint32Concrete",2145],[5,"Sint32Traits",2145],[8,"Sint64Concrete",2145],[5,"Sint64Traits",2145],[8,"Sint8Concrete",2145],[5,"Sint8Traits",2145],[6,"StarkNetConcreteLibfunc",2146],[6,"StructConcreteLibfunc",2147],[6,"Uint128Concrete",2148],[5,"Uint128Traits",2148],[8,"Uint16Concrete",2149],[5,"Uint16Traits",2149],[6,"Uint256Concrete",2150],[8,"Uint32Concrete",2149],[5,"Uint32Traits",2149],[6,"Uint512Concrete",2151],[8,"Uint64Concrete",2149],[5,"Uint64Traits",2149],[8,"Uint8Concrete",2149],[5,"Uint8Traits",2149],[10,"Any",2100],[17,"Output"],[10,"FnOnce",2152],[5,"DebugUtils",886],[1,"str"],[5,"ExecutionEngine",2153],[5,"EnumSnapshotVariantsMeta",918],[5,"GasCost",939],[6,"ApChangeError",2154],[6,"CostError",2155],[5,"StatementIdx",2085],[6,"CostTokenType",2138],[5,"PrimeModuloMeta",1071],[5,"BigUint",2156],[5,"ReallocBindingsMeta",1092],[5,"RuntimeBindingsMeta",1114],[5,"OperationRef",2121],[5,"SnapshotClonesMeta",1148],[8,"CloneFn",1148],[10,"Fn",2152],[5,"Arc",2157],[5,"TailRecursionMeta",1170],[5,"BlockRef",2118],[5,"Felt252Abi",1220],[5,"ArrayAbi",1220],[8,"SyscallResult",1220],[5,"DummySyscallHandler",1220],[5,"U256",1220],[5,"ExecutionInfo",1220],[5,"ExecutionInfoV2",1220],[5,"TxV2Info",1220],[5,"ResourceBounds",1220],[5,"BlockInfo",1220],[5,"TxInfo",1220],[5,"Secp256k1Point",1220],[5,"Secp256r1Point",1220],[1,"u32"],[5,"StubSyscallHandler",1683],[5,"StubEvent",1683],[5,"ContractLogs",1683],[5,"WithSelf",1785],[10,"TypeBuilder",1785],[5,"Type",2158],[10,"Clone",2159],[5,"Layout",2109],[5,"InfoAndTypeConcreteType",2160],[5,"InfoOnlyConcreteType",2160],[5,"BoundedIntConcreteType",2161],[5,"CouponConcreteType",2131],[5,"EnumConcreteType",2135],[8,"TypeLayout",1875],[5,"PRIME",1879],[5,"HALF_PRIME",1879],[5,"BigInt",2162],[6,"StarkNetTypeConcrete",2146],[6,"Secp256PointTypeConcrete",2163],[5,"StructConcreteType",2147],[10,"ProgramRegistryExt",1945],[10,"Into",2164],[5,"GenFunction",2085],[6,"Cow",2165],[1,"i128"],[1,"i8"],[1,"u16"],[1,"i16"],[1,"i32"],[15,"Range",316],[15,"NotEnoughGas",1070],[15,"Struct",2067],[15,"Enum",2067],[15,"Felt252Dict",2067],[15,"BoundedInt",2067],[15,"Secp256K1Point",2067],[15,"Secp256R1Point",2067]],"r":[[2,2081],[5,2081],[19,2166],[45,2081],[46,2081],[84,110],[86,132],[435,2101],[438,2103]],"b":[[32,"impl-Debug-for-LLVMCompileError"],[33,"impl-Display-for-LLVMCompileError"],[36,"impl-From%3Cu8%3E-for-OptLevel"],[38,"impl-From%3Cusize%3E-for-OptLevel"],[92,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[93,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[269,"impl-Display-for-Error"],[270,"impl-Debug-for-Error"],[271,"impl-Debug-for-SierraAssertError"],[272,"impl-Display-for-SierraAssertError"],[273,"impl-From%3CGasMetadataError%3E-for-Error"],[274,"impl-From%3CLayoutError%3E-for-Error"],[276,"impl-From%3CEditStateError%3E-for-Error"],[277,"impl-From%3CError%3E-for-Error"],[278,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[279,"impl-From%3CTryFromIntError%3E-for-Error"],[280,"impl-From%3CLayoutError%3E-for-Error"],[459,"impl-From%3CJitNativeExecutor%3C\'m%3E%3E-for-NativeExecutor%3C\'m%3E"],[461,"impl-From%3CAotNativeExecutor%3E-for-NativeExecutor%3C\'m%3E"],[989,"impl-Display-for-GasMetadataError"],[990,"impl-Debug-for-GasMetadataError"],[994,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[996,"impl-From%3CCostError%3E-for-GasMetadataError"],[1971,"impl-Display-for-LayoutError"],[1972,"impl-Debug-for-LayoutError"],[2036,"impl-From%3C%5BT;+N%5D%3E-for-JitValue"],[2038,"impl-From%3Ci128%3E-for-JitValue"],[2039,"impl-From%3Ci8%3E-for-JitValue"],[2040,"impl-From%3Cu64%3E-for-JitValue"],[2041,"impl-From%3CVec%3CT%3E%3E-for-JitValue"],[2042,"impl-From%3Cu8%3E-for-JitValue"],[2043,"impl-From%3Cu16%3E-for-JitValue"],[2044,"impl-From%3CFelt%3E-for-JitValue"],[2045,"impl-From%3Ci16%3E-for-JitValue"],[2046,"impl-From%3C%26%5BT%5D%3E-for-JitValue"],[2047,"impl-From%3Cu32%3E-for-JitValue"],[2048,"impl-From%3Ci64%3E-for-JitValue"],[2049,"impl-From%3Ci32%3E-for-JitValue"],[2050,"impl-From%3Cu128%3E-for-JitValue"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA8GgwABAAEABAABAAcADAAVAAAAFwAGAB8AAAAhAAIAJQAAACcAAQAtAAAAMAAOAEEACQBMAAMAUgAMAGEAEgB1AAAAdwANAIYABACMAAAAjgANAJ0AAQChAAgArQAdAM0AAQDRACQA9wAJAAIBEQAVAQQAHQEhAEEBMQB3AQEAfAE6ALkBDwDMAQAAzgEBANUBAQDYAQAA2gEAAN0BAADfAToAIAIAACYCAwAwAgEANgIAAD4CAABDAgAATAINAGMCBgBzAgUAmgIAAJ4CAQCuAgAAuAIBALsCAQDLAgAAzQIAAPwCFwBWAwEAWQMCAF0DAABgAwAAZwMGAG8DAABxAwoAfQMAAH8DAACCAxgAnAMAAJ4DEACyAy0A4wMAAOUDBADrAwEA8QM+ADEEAgA4BAwARgQCAE4EDABcBAIAZAQAAGwEAABvBAsAfAQFAIQEDgCUBAEAlwQAAJ0EBgClBAUArAQCALMEAwC4BA8AyQQBAM0EBwDWBCgAAAV7AIgFDwCkBfAAlwYbALYGAgC8Bj0A/AYBAP8GAAABBwEABgcBAAoHAQANBwAAEgcFABsHAQAfBwAAKAcAAC4HBgA2BwAAOwcDAEYHAQBJBwAAWAcAAFoHAwBfBwEAZQcaAIwHBQCaBwcAowcCAKgHBQC0BwEAuwcBAL4HEQDRBwYA2gcYAPQHAQD3BwwABQgbAA=="}],\
 ["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNHOOOOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","command","command_for_update","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","into","into","main","opt_level","output_library","output_mlir","path","replace_ids","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","single_file","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","vzip"],"q":[[0,"cairo_native_compile"],[63,"dyn_clone::sealed"],[64,"clap_builder::builder::command"],[65,"core::fmt"],[66,"clap_builder::parser::matches::arg_matches"],[67,"clap_builder"],[68,"core::result"],[69,"clap_builder::util::id"],[70,"core::option"],[71,"anyhow"],[72,"alloc::boxed"],[73,"std::collections::hash::map"],[74,"alloc::vec"],[75,"alloc::collections::vec_deque"],[76,"clap_builder::builder::possible_value"],[77,"core::any"]],"i":[4,0,4,0,4,7,7,7,4,7,4,7,4,4,7,7,4,7,4,7,7,7,7,4,7,0,7,7,7,7,7,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,4,4,4,7,4,7,4,7,4,7,4,7,7,7,4,4,7],"f":"````{{cb}d{}}`{ff}0{ce{}{}}000{hh}{{ce}d{}{}}{{}f}0{{hj}l}{{nj}l}{cc{}}0{A`{{Ad{nAb}}}}0{{}{{Ah{Af}}}}88{{}{{Aj{d}}}}`````{{c{Ad{eg}}}{{Ad{{Ad{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{Ad{{Al{e}}g}}}{}{}{}}{{c{Ah{e}}}{{Ad{{Ah{e}}g}}}{}{}{}}{{c{An{eg}}}{{Ad{{An{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{Ad{{B`{e}}g}}}{}{}{}}{{c{Bb{eg}}}{{Ad{{Bb{eg}}i}}}{}{}{}{}}{{c{Bd{e}}}{{Ad{{Bd{e}}g}}}{}{}{}}0643215`{ce{}{}}{h{{Ah{Bf}}}}{c{{Ad{e}}}{}{}}000{cBh{}}03333{{nA`}{{Ad{dAb}}}}0{{}{{Bj{h}}}}55","D":"Ah","p":[[5,"Private",63],[1,"unit"],[5,"Command",64],[6,"RunMode",0],[5,"Formatter",65],[8,"Result",65],[5,"Args",0],[5,"ArgMatches",66],[8,"Error",67],[6,"Result",68],[5,"Id",69],[6,"Option",70],[8,"Result",71],[5,"Box",72],[5,"HashMap",73],[5,"Vec",74],[1,"tuple"],[5,"VecDeque",75],[5,"PossibleValue",76],[5,"TypeId",77],[1,"slice"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADMABwAAAAEAAwACAAcACwAVAAIAGgAAACAADQAvABAA"}],\
 ["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNONNHHOHHNNNNNNNNNNNNNNONNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","__clone_box","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","command","command_for_update","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","input","into","into","load_program","main","output","parse_input","parse_output","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","starknet","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip"],"q":[[0,"cairo_native_dump"],[64,"dyn_clone::sealed"],[65,"clap_builder::builder::command"],[66,"core::fmt"],[67,"clap_builder::parser::matches::arg_matches"],[68,"clap_builder"],[69,"core::result"],[70,"clap_builder::util::id"],[71,"core::option"],[72,"std::path"],[73,"melior::context"],[74,"cairo_lang_sierra::program"],[75,"cairo_native::debug_info"],[76,"core::error"],[77,"alloc::boxed"],[78,"alloc::string"],[79,"std::collections::hash::map"],[80,"alloc::collections::vec_deque"],[81,"alloc::vec"],[82,"core::any"]],"i":[0,0,5,5,4,5,4,4,4,5,4,5,4,5,4,5,4,4,4,5,4,5,4,4,4,4,4,5,0,0,4,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,4,4,5,4,5,4,5,4,5,4,5,4,5,4,4,4,5],"f":"````{{cb}d{}}0{ff}0{ce{}{}}000{hh}{jj}{{ce}d{}{}}0{{}f}0{{hl}n}{{jl}n}{cc{}}0{A`{{Ad{hAb}}}}0{{}{{Ah{Af}}}}`99{{Aj{Ah{Al}}An}{{Ad{{Bd{B`{Ah{Bb}}}}{Bh{Bf}}}}}}{{}{{Ad{d{Bh{Bf}}}}}}`{Bj{{Ad{BlBn}}}}{Bj{{Ad{jBn}}}}{{c{C`{eg}}}{{Ad{{C`{eg}}i}}}{}{}{}{}}{{c{Ah{e}}}{{Ad{{Ah{e}}g}}}{}{}{}}{{c{Bh{e}}}{{Ad{{Bh{e}}g}}}{}{}{}}{{c{Ad{eg}}}{{Ad{{Ad{eg}}i}}}{}{}{}{}}{{c{Cb{e}}}{{Ad{{Cb{e}}g}}}{}{}{}}{{c{Bd{eg}}}{{Ad{{Bd{eg}}i}}}{}{}{}{}}{{c{Cd{e}}}{{Ad{{Cd{e}}g}}}{}{}{}}3601245`{ce{}{}}0{c{{Ad{e}}}{}{}}000{cCf{}}02222{{hA`}{{Ad{dAb}}}}033","D":"j","p":[[5,"Private",64],[1,"unit"],[5,"Command",65],[5,"CmdLine",0],[6,"CompilerOutput",0],[5,"Formatter",66],[8,"Result",66],[5,"ArgMatches",67],[8,"Error",68],[6,"Result",69],[5,"Id",70],[6,"Option",71],[5,"Path",72],[5,"Context",73],[1,"bool"],[5,"Program",74],[5,"DebugLocations",75],[1,"tuple"],[10,"Error",76],[5,"Box",77],[1,"str"],[5,"PathBuf",72],[5,"String",78],[5,"HashMap",79],[5,"VecDeque",80],[5,"Vec",81],[5,"TypeId",82]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADsABAAAABQAFwADAB0AEgAxAA8A"}],\
-["cairo_native_run",{"t":"PFPGNONNONNNNNNNNNNNNNNNNNHOONNNNNNNNNNNNNNOONNNNNNNNNNNNNNCNNNPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFFNNNNNNNNNNHNOOHHNNNNONNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","augment_args","augment_args_for_update","available_gas","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","command","command_for_update","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","into","into","main","opt_level","path","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","single_file","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestSyscallHandler","TestsSummary","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","call_contract","deploy","display_tests_summary","emit_event","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","from","gas_usage","get_block_hash","get_execution_info","get_execution_info_v2","ignored","into","into","into","into","keccak","library_call","passed","replace_class","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_mul","secp256k1_new","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_mul","secp256r1_new","send_message_to_l1","status","storage_read","storage_write","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip"],"q":[[0,"cairo_native_run"],[63,"cairo_native_run::utils"],[115,"cairo_native_run::utils::test"],[221,"dyn_clone::sealed"],[222,"clap_builder::builder::command"],[223,"core::fmt"],[224,"clap_builder::parser::matches::arg_matches"],[225,"clap_builder"],[226,"core::result"],[227,"clap_builder::util::id"],[228,"core::option"],[229,"anyhow"],[230,"std::collections::hash::map"],[231,"alloc::boxed"],[232,"alloc::collections::vec_deque"],[233,"alloc::vec"],[234,"clap_builder::builder::possible_value"],[235,"core::any"],[236,"cairo_lang_sierra::program"],[237,"cairo_felt::lib_bigint_felt"],[238,"alloc::vec::into_iter"],[239,"alloc::string"],[240,"cairo_native::values"],[241,"starknet_types_core::felt"],[242,"cairo_native::execution_result"],[243,"cairo_lang_runner"],[244,"cairo_native::starknet"],[245,"cairo_lang_test_plugin"],[246,"scarb_metadata"],[247,"cairo_lang_test_plugin::test_config"],[248,"cairo_lang_sierra::ids"],[249,"cairo_lang_sierra::extensions::modules::gas"],[250,"cairo_lang_utils::ordered_hash_map"]],"i":[4,0,4,0,4,7,7,7,7,4,7,4,7,4,4,7,7,4,7,4,7,7,7,7,4,7,0,7,7,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,4,4,4,7,4,7,4,7,4,7,4,7,7,7,0,4,4,7,22,22,0,0,22,51,22,51,22,22,22,0,22,0,51,22,51,22,0,51,0,51,51,51,51,51,51,51,22,22,22,22,22,22,22,51,0,22,22,51,22,51,22,51,22,51,22,51,22,22,51,22,55,55,0,0,0,0,37,56,55,33,37,56,55,33,33,33,0,33,37,37,0,0,37,56,55,33,56,33,33,33,37,37,56,55,33,33,33,37,33,37,37,37,37,37,37,37,56,56,56,56,56,56,56,55,55,55,55,55,55,55,33,33,33,33,33,33,33,0,33,33,33,33,33,33,33,33,33,33,33,56,33,33,37,56,55,33,37,56,55,33,37,56,55,33,37,56,55,33,37,56,55,33,37,56,55,33],"f":"````{{cb}d{}}`{ff}0`{ce{}{}}000{hh}{{ce}d{}{}}{{}f}0{{hj}l}{{nj}l}{cc{}}0{A`{{Ad{nAb}}}}0{{}{{Ah{Af}}}}88{{}{{Aj{d}}}}``{{c{Al{eg}}}{{Ad{{Al{eg}}i}}}{}{}{}{}}{{c{Ah{e}}}{{Ad{{Ah{e}}g}}}{}{}{}}{{c{An{e}}}{{Ad{{An{e}}g}}}{}{}{}}{{c{Ad{eg}}}{{Ad{{Ad{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{Ad{{B`{e}}g}}}{}{}{}}{{c{Bb{eg}}}{{Ad{{Bb{eg}}i}}}{}{}{}{}}{{c{Bd{e}}}{{Ad{{Bd{e}}g}}}{}{}{}}4532106``{ce{}{}}{h{{Ah{Bf}}}}{c{{Ad{e}}}{}{}}000{cBh{}}03333{{nA`}{{Ad{dAb}}}}0`{{}{{Bj{h}}}}55````{{cb}d{}}6666{BlBl}{{ce}d{}{}}{{BnC`}{{Aj{Cb}}}}{{Blj}l}{{{Cf{Cd}}}Ch}{cc{}}0<<{Cj{{Bd{Cl}}}}`{Cn{{Aj{D`}}}}?{{c{Ah{e}}}{{Ad{{Ah{e}}g}}}{}{}{}}{{c{An{e}}}{{Ad{{An{e}}g}}}{}{}{}}{{c{Ad{eg}}}{{Ad{{Ad{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{Ad{{B`{e}}g}}}{}{}{}}{{c{Bb{eg}}}{{Ad{{Bb{eg}}i}}}{}{}{}{}}{{c{Al{eg}}}{{Ad{{Al{eg}}i}}}{}{}{}{}}4321{{c{Bd{e}}}{{Ad{{Bd{e}}g}}}{}{}{}}16``{ce{}{}}{Bl{{Ah{Bf}}}}{c{{Ad{e}}}{}{}}000{cBh{}}03333{{}{{Bj{Bl}}}}44``````44444444{{DbClCl{Bj{Cl}}Dd}{{Df{{Bd{Cl}}}}}}{{DbClCl{Bj{Cl}}DhDd}{{Df{{Bb{Cl{Bd{Cl}}}}}}}}{{DjDl}d}{{Db{Bj{Cl}}{Bj{Cl}}Dd}{{Df{d}}}}``{{DnDhDhCh}{{Bb{DnDl}}}}{E`{{Bd{Eb}}}}{cc{}}000`{{DbEdDd}{{Df{Cl}}}}{{DbDd}{{Df{Ef}}}}{{DbDd}{{Df{Eh}}}}`>>>>{{Db{Bj{Ed}}Dd}{{Df{Ej}}}}:`{{DbClDd}{{Df{d}}}}{{c{Ah{e}}}{{Ad{{Ah{e}}g}}}{}{}{}}{{c{Al{eg}}}{{Ad{{Al{eg}}i}}}{}{}{}{}}{{c{Bd{e}}}{{Ad{{Bd{e}}g}}}{}{}{}}{{c{Bb{eg}}}{{Ad{{Bb{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Ad{{An{e}}g}}}{}{}{}}{{c{Ad{eg}}}{{Ad{{Ad{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{Ad{{B`{e}}g}}}{}{}{}}362104542501363465012{{{Bd{{Bb{ChEl}}}}Bn{Fd{En{Fd{F`Fb}}}}Ff}{{Aj{Dj}}}}{{DbFhFhDd}{{Df{Fh}}}}{{DbEjDhDd}{{Df{{Ah{Fh}}}}}}{{DbFhDd}{{Df{{Bb{EjEj}}}}}}{{DbFhEjDd}{{Df{Fh}}}}{{DbEjEjDd}{{Df{{Ah{Fh}}}}}}{{DbFjFjDd}{{Df{Fj}}}}{{DbEjDhDd}{{Df{{Ah{Fj}}}}}}{{DbFjDd}{{Df{{Bb{EjEj}}}}}}{{DbFjEjDd}{{Df{Fj}}}}{{DbEjEjDd}{{Df{{Ah{Fj}}}}}}{{DbCl{Bj{Cl}}Dd}{{Df{d}}}}`{{DbFlClDd}{{Df{Cl}}}}{{DbFlClClDd}{{Df{d}}}}{c{{Ad{e}}}{}{}}0000000{cBh{}}000{ce{}{}}00000000000","D":"Dh","p":[[5,"Private",221],[1,"unit"],[5,"Command",222],[6,"RunMode",0],[5,"Formatter",223],[8,"Result",223],[5,"Args",0],[5,"ArgMatches",224],[8,"Error",225],[6,"Result",226],[5,"Id",227],[6,"Option",228],[8,"Result",229],[5,"HashMap",230],[5,"Box",231],[5,"VecDeque",232],[1,"tuple"],[5,"Vec",233],[5,"PossibleValue",234],[5,"TypeId",235],[1,"slice"],[6,"RunMode",63],[5,"Program",236],[1,"str"],[8,"Function",236],[5,"Felt252",237],[5,"IntoIter",238],[5,"String",239],[6,"JitValue",240],[5,"Felt",241],[5,"ExecutionResult",242],[6,"RunResultValue",243],[5,"TestSyscallHandler",115],[1,"u128"],[8,"SyscallResult",244],[1,"bool"],[5,"TestsSummary",115],[1,"usize"],[5,"TestCompilation",245],[5,"PackageMetadata",246],[5,"TargetMetadata",246],[1,"u64"],[5,"ExecutionInfo",244],[5,"ExecutionInfoV2",244],[5,"U256",244],[5,"TestConfig",247],[5,"FunctionId",248],[6,"CostTokenType",249],[1,"i32"],[5,"OrderedHashMap",250],[5,"RunArgs",63],[5,"Secp256k1Point",244],[5,"Secp256r1Point",244],[1,"u32"],[6,"TestStatus",115],[5,"TestResult",115]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALkAEgAAAAEAAwACAAcAAQAKAAkAFgACABsAAAAeAA0ALgAcAEwAAABTAAAAVQAgAHgAAAB6AAkAhQACAI8AAwCXAB8AuAAKAMQAGQA="}],\
+["cairo_native_run",{"t":"PFPGNONNONNNNNNNNNNNNNNNNNHOONNNNNNNNNNNNNNOONNNNNNNNNNNNNNCNNNPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFNNNNNNHOOHHNNNOONNNONNNNNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","augment_args","augment_args_for_update","available_gas","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","command","command_for_update","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","into","into","main","opt_level","path","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","single_file","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","display_tests_summary","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","into","into","into","passed","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"cairo_native_run"],[63,"cairo_native_run::utils"],[115,"cairo_native_run::utils::test"],[181,"dyn_clone::sealed"],[182,"clap_builder::builder::command"],[183,"core::fmt"],[184,"clap_builder::parser::matches::arg_matches"],[185,"clap_builder"],[186,"core::result"],[187,"clap_builder::util::id"],[188,"core::option"],[189,"anyhow"],[190,"alloc::boxed"],[191,"alloc::collections::vec_deque"],[192,"alloc::vec"],[193,"std::collections::hash::map"],[194,"clap_builder::builder::possible_value"],[195,"core::any"],[196,"cairo_lang_sierra::program"],[197,"cairo_felt::lib_bigint_felt"],[198,"alloc::vec::into_iter"],[199,"alloc::string"],[200,"cairo_native::values"],[201,"starknet_types_core::felt"],[202,"cairo_native::execution_result"],[203,"cairo_lang_runner"],[204,"cairo_lang_test_plugin"],[205,"scarb_metadata"],[206,"cairo_lang_test_plugin::test_config"],[207,"cairo_lang_sierra::ids"],[208,"cairo_lang_sierra::extensions::modules::gas"],[209,"cairo_lang_utils::ordered_hash_map"]],"i":[4,0,4,0,4,7,7,7,7,4,7,4,7,4,4,7,7,4,7,4,7,7,7,7,4,7,0,7,7,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,4,4,4,7,4,7,4,7,4,7,4,7,7,7,0,4,4,7,22,22,0,0,22,44,22,44,22,22,22,0,22,0,44,22,44,22,0,44,0,44,44,44,44,44,44,44,22,22,22,22,22,22,22,44,0,22,22,44,22,44,22,44,22,44,22,44,22,22,44,22,45,45,0,0,0,33,46,45,33,46,45,0,33,33,0,0,33,46,45,46,33,33,46,45,33,33,33,33,33,33,33,33,46,46,46,46,46,46,46,45,45,45,45,45,45,45,0,46,33,46,45,33,46,45,33,46,45,33,46,45,33,46,45,33,46,45],"f":"````{{cb}d{}}`{ff}0`{ce{}{}}000{hh}{{ce}d{}{}}{{}f}0{{hj}l}{{nj}l}{cc{}}0{A`{{Ad{nAb}}}}0{{}{{Ah{Af}}}}88{{}{{Aj{d}}}}``{{c{Al{e}}}{{Ad{{Al{e}}g}}}{}{}{}}{{c{Ah{e}}}{{Ad{{Ah{e}}g}}}{}{}{}}{{c{Ad{eg}}}{{Ad{{Ad{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Ad{{An{e}}g}}}{}{}{}}{{c{B`{eg}}}{{Ad{{B`{eg}}i}}}{}{}{}{}}{{c{Bb{e}}}{{Ad{{Bb{e}}g}}}{}{}{}}{{c{Bd{eg}}}{{Ad{{Bd{eg}}i}}}{}{}{}{}}6210543``{ce{}{}}{h{{Ah{Bf}}}}{c{{Ad{e}}}{}{}}000{cBh{}}03333{{nA`}{{Ad{dAb}}}}0`{{}{{Bj{h}}}}55````{{cb}d{}}6666{BlBl}{{ce}d{}{}}{{BnC`}{{Aj{Cb}}}}{{Blj}l}{{{Cf{Cd}}}Ch}{cc{}}0<<{Cj{{Bb{Cl}}}}`{Cn{{Aj{D`}}}}{{c{Ad{eg}}}{{Ad{{Ad{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Ad{{An{e}}g}}}{}{}{}}{{c{B`{eg}}}{{Ad{{B`{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{Ad{{Al{e}}g}}}{}{}{}}{{c{Bb{e}}}{{Ad{{Bb{e}}g}}}{}{}{}}{{c{Bd{eg}}}{{Ad{{Bd{eg}}i}}}{}{}{}{}}{{c{Ah{e}}}{{Ad{{Ah{e}}g}}}{}{}{}}5012463``{ce{}{}}{Bl{{Ah{Bf}}}}{c{{Ad{e}}}{}{}}000{cBh{}}03333{{}{{Bj{Bl}}}}44`````444444{{DbDd}d}``{{DfDhDhCh}{{B`{DfDd}}}}{Dj{{Bb{Dl}}}}{cc{}}00``888`=9;:;9=9>:;=>{c{{Al{e}}}{}{}}000{cAn{}}0{ce{}{}}00000","D":"Bb","p":[[6,"c_void",37],[1,"tuple"],[1,"unit"],[1,"u64"],[1,"u8"],[1,"array"],[5,"NonNull",38],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"FieldElement",39],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[6,"Result",40],[5,"TypeId",41]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQAAwAAAAYAFAABABoACwA="}],\
 ["cairo_native_stress",{"t":"SJFFSNNNNNNONNNOHHNNNNNHNNNNHHNONNNNNNNNNNNNNNOHNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","cache","command","command_for_update","compile_and_insert","context","directory_get_size","directory_is_empty","fmt","from","from","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","group_id","into","into","main","modify_starknet_contract","new","output","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rounds","set_global_subscriber","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip"],"q":[[0,"cairo_native_stress"],[62,"clap_builder::builder::command"],[63,"cairo_lang_sierra::program"],[64,"cairo_native::ffi"],[65,"cairo_native::executor::aot"],[66,"alloc::rc"],[67,"core::cmp"],[68,"core::hash"],[69,"core::fmt"],[70,"std::io::error"],[71,"std::path"],[72,"core::convert"],[73,"clap_builder::parser::matches::arg_matches"],[74,"clap_builder"],[75,"core::result"],[76,"cairo_lang_sierra::ids"],[77,"core::option"],[78,"clap_builder::util::id"],[79,"cairo_native::context"],[80,"alloc::vec"],[81,"std::collections::hash::map"],[82,"alloc::boxed"],[83,"alloc::collections::vec_deque"],[84,"core::any"]],"i":[0,0,0,0,0,16,16,2,16,2,16,2,16,16,2,2,0,0,16,2,16,16,16,0,2,16,2,16,0,0,2,16,2,2,2,2,2,2,2,16,16,16,16,16,16,16,16,0,2,16,2,16,2,16,2,16,2,16,16,16,2,16],"f":"`````{bb}0{ce{}{}}000`{{}b}0{{{d{c}}cfh}{{l{j}}}{nA`AbAd}}`{c{{Ah{Af}}}{{Al{Aj}}}}{c{{Ah{An}}}{{Al{Aj}}}}{{B`Bb}Bd}{cc{}}0{Bf{{Bj{B`Bh}}}}0{Bl{{C`{Bnf}}}}{{{d{c}}c}{{Cb{{l{j}}}}}{nA`AbAd}}{{}{{Cb{Cd}}}}::{{}Cf}{{fBlBl}f}{Ch{{d{c}}}{nA`AbAd}}`{{c{Cj{e}}}{{Bj{{Cj{e}}g}}}{}{}{}}{{c{Cl{eg}}}{{Bj{{Cl{eg}}i}}}{}{}{}{}}{{c{Cb{e}}}{{Bj{{Cb{e}}g}}}{}{}{}}{{c{Cn{e}}}{{Bj{{Cn{e}}g}}}{}{}{}}{{c{Bj{eg}}}{{Bj{{Bj{eg}}i}}}{}{}{}{}}{{c{D`{e}}}{{Bj{{D`{e}}g}}}{}{}{}}{{c{C`{eg}}}{{Bj{{C`{eg}}i}}}{}{}{}{}}0253164`{B`Cf}{c{{Bj{e}}}{}{}}000{cDb{}}0{ce{}{}}000{{B`Bf}{{Bj{CfBh}}}}011","D":"An","p":[[5,"Command",62],[5,"NaiveAotCache",0],[5,"Program",63],[6,"OptLevel",64],[5,"AotNativeExecutor",65],[5,"Rc",66],[10,"PartialEq",67],[10,"Eq",67],[10,"Hash",68],[10,"Display",69],[1,"u64"],[8,"Result",70],[5,"Path",71],[10,"AsRef",72],[1,"bool"],[5,"StressTestCommand",0],[5,"Formatter",69],[8,"Result",69],[5,"ArgMatches",73],[8,"Error",74],[6,"Result",75],[1,"u32"],[5,"FunctionId",76],[1,"tuple"],[6,"Option",77],[5,"Id",78],[1,"unit"],[5,"NativeContext",79],[5,"Vec",80],[5,"HashMap",81],[5,"Box",82],[5,"VecDeque",83],[5,"TypeId",84]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC8ACgACAAAABgAIABAAAAASAAEAFgABABkAAQAdAAAAHwAAACEADQAwAA4A"}],\
-["cairo_native_test",{"t":"FONNNNNNONNNNNOONHOONNNNNNNOOONNNNNNNCNPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFFNNNNNNNNNNHNOOHHNNNNONNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","augment_args","augment_args_for_update","borrow","borrow_mut","command","command_for_update","filter","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","into","main","opt_level","path","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","single_file","starknet","try_from","try_into","type_id","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestSyscallHandler","TestsSummary","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","call_contract","deploy","display_tests_summary","emit_event","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","from","gas_usage","get_block_hash","get_execution_info","get_execution_info_v2","ignored","into","into","into","into","keccak","library_call","passed","replace_class","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_mul","secp256k1_new","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_mul","secp256r1_new","send_message_to_l1","status","storage_read","storage_write","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip"],"q":[[0,"cairo_native_test"],[39,"cairo_native_test::utils"],[91,"cairo_native_test::utils::test"],[197,"clap_builder::builder::command"],[198,"core::fmt"],[199,"clap_builder::parser::matches::arg_matches"],[200,"clap_builder"],[201,"core::result"],[202,"clap_builder::util::id"],[203,"core::option"],[204,"anyhow"],[205,"alloc::boxed"],[206,"alloc::collections::vec_deque"],[207,"alloc::vec"],[208,"std::collections::hash::map"],[209,"core::any"],[210,"dyn_clone::sealed"],[211,"cairo_lang_sierra::program"],[212,"cairo_felt::lib_bigint_felt"],[213,"alloc::vec::into_iter"],[214,"alloc::string"],[215,"cairo_native::values"],[216,"starknet_types_core::felt"],[217,"cairo_native::execution_result"],[218,"cairo_lang_runner"],[219,"clap_builder::builder::possible_value"],[220,"cairo_native::starknet"],[221,"cairo_lang_test_plugin"],[222,"scarb_metadata"],[223,"cairo_lang_test_plugin::test_config"],[224,"cairo_lang_sierra::ids"],[225,"cairo_lang_sierra::extensions::modules::gas"],[226,"cairo_lang_utils::ordered_hash_map"]],"i":[0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,19,19,0,0,19,50,19,50,19,19,19,0,19,0,50,19,50,19,0,50,0,50,50,50,50,50,50,50,19,19,19,19,19,19,19,50,0,19,19,50,19,50,19,50,19,50,19,50,19,19,50,19,54,54,0,0,0,0,36,55,54,32,36,55,54,32,32,32,0,32,36,36,0,0,36,55,54,32,55,32,32,32,36,36,55,54,32,32,32,36,32,36,36,36,36,36,36,36,55,55,55,55,55,55,55,54,54,54,54,54,54,54,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,55,32,32,36,55,54,32,36,55,54,32,36,55,54,32,36,55,54,32,36,55,54,32,36,55,54,32],"f":"``{bb}0{ce{}{}}0{{}b}0`{{df}h}{cc{}}{j{{n{dl}}}}0{{}{{Ab{A`}}}}``5{{}{{Af{Ad}}}}``{{c{Ab{e}}}{{n{{Ab{e}}g}}}{}{}{}}{{c{Ah{e}}}{{n{{Ah{e}}g}}}{}{}{}}{{c{n{eg}}}{{n{{n{eg}}i}}}{}{}{}{}}{{c{Aj{e}}}{{n{{Aj{e}}g}}}{}{}{}}{{c{Al{eg}}}{{n{{Al{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{n{{An{e}}g}}}{}{}{}}{{c{B`{eg}}}{{n{{B`{eg}}i}}}{}{}{}{}}```{c{{n{e}}}{}{}}0{cBb{}}??{{dj}{{n{Adl}}}}0`{ce{}{}}````{{cBd}Ad{}}1111{BfBf}{{ce}Ad{}{}}{{BhBj}{{Af{Bl}}}}{{Bff}h}{{{C`{Bn}}}Cb}{cc{}}077{Cd{{An{Cf}}}}`{Ch{{Af{Cj}}}}?=>{{c{Ab{e}}}{{n{{Ab{e}}g}}}{}{}{}}{{c{Ah{e}}}{{n{{Ah{e}}g}}}{}{}{}}{{c{n{eg}}}{{n{{n{eg}}i}}}{}{}{}{}}{{c{Aj{e}}}{{n{{Aj{e}}g}}}{}{}{}}{{c{An{e}}}{{n{{An{e}}g}}}{}{}{}}{{c{B`{eg}}}{{n{{B`{eg}}i}}}{}{}{}{}}3452{{c{Al{eg}}}{{n{{Al{eg}}i}}}{}{}{}{}}``{ce{}{}}{Bf{{Ab{Cl}}}}{c{{n{e}}}{}{}}000{cBb{}}03333{{}{{Cn{Bf}}}}44``````44444444{{D`CfCf{Cn{Cf}}Db}{{Dd{{An{Cf}}}}}}{{D`CfCf{Cn{Cf}}DfDb}{{Dd{{Al{Cf{An{Cf}}}}}}}}{{DhDj}Ad}{{D`{Cn{Cf}}{Cn{Cf}}Db}{{Dd{Ad}}}}``{{DlDfDfCb}{{Al{DlDj}}}}{Dn{{An{E`}}}}{cc{}}000`{{D`EbDb}{{Dd{Cf}}}}{{D`Db}{{Dd{Ed}}}}{{D`Db}{{Dd{Ef}}}}`>>>>{{D`{Cn{Eb}}Db}{{Dd{Eh}}}}:`{{D`CfDb}{{Dd{Ad}}}}{{c{An{e}}}{{n{{An{e}}g}}}{}{}{}}{{c{B`{eg}}}{{n{{B`{eg}}i}}}{}{}{}{}}{{c{Al{eg}}}{{n{{Al{eg}}i}}}{}{}{}{}}{{c{Aj{e}}}{{n{{Aj{e}}g}}}{}{}{}}{{c{n{eg}}}{{n{{n{eg}}i}}}{}{}{}{}}{{c{Ah{e}}}{{n{{Ah{e}}g}}}{}{}{}}{{c{Ab{e}}}{{n{{Ab{e}}g}}}{}{}{}}056432121346506321045{{{An{{Al{CbEj}}}}Bh{Fb{El{Fb{EnF`}}}}Fd}{{Af{Dh}}}}{{D`FfFfDb}{{Dd{Ff}}}}{{D`EhDfDb}{{Dd{{Ab{Ff}}}}}}{{D`FfDb}{{Dd{{Al{EhEh}}}}}}{{D`FfEhDb}{{Dd{Ff}}}}{{D`EhEhDb}{{Dd{{Ab{Ff}}}}}}{{D`FhFhDb}{{Dd{Fh}}}}{{D`EhDfDb}{{Dd{{Ab{Fh}}}}}}{{D`FhDb}{{Dd{{Al{EhEh}}}}}}{{D`FhEhDb}{{Dd{Fh}}}}{{D`EhEhDb}{{Dd{{Ab{Fh}}}}}}{{D`Cf{Cn{Cf}}Db}{{Dd{Ad}}}}`{{D`FjCfDb}{{Dd{Cf}}}}{{D`FjCfCfDb}{{Dd{Ad}}}}{c{{n{e}}}{}{}}0000000{cBb{}}000{ce{}{}}00000000000","D":"Dj","p":[[5,"Command",197],[5,"Args",0],[5,"Formatter",198],[8,"Result",198],[5,"ArgMatches",199],[8,"Error",200],[6,"Result",201],[5,"Id",202],[6,"Option",203],[1,"unit"],[8,"Result",204],[5,"Box",205],[5,"VecDeque",206],[1,"tuple"],[5,"Vec",207],[5,"HashMap",208],[5,"TypeId",209],[5,"Private",210],[6,"RunMode",39],[5,"Program",211],[1,"str"],[8,"Function",211],[5,"Felt252",212],[5,"IntoIter",213],[5,"String",214],[6,"JitValue",215],[5,"Felt",216],[5,"ExecutionResult",217],[6,"RunResultValue",218],[5,"PossibleValue",219],[1,"slice"],[5,"TestSyscallHandler",91],[1,"u128"],[8,"SyscallResult",220],[1,"bool"],[5,"TestsSummary",91],[1,"usize"],[5,"TestCompilation",221],[5,"PackageMetadata",222],[5,"TargetMetadata",222],[1,"u64"],[5,"ExecutionInfo",220],[5,"ExecutionInfoV2",220],[5,"U256",220],[5,"TestConfig",223],[5,"FunctionId",224],[6,"CostTokenType",225],[1,"i32"],[5,"OrderedHashMap",226],[5,"RunArgs",39],[5,"Secp256k1Point",220],[5,"Secp256r1Point",220],[1,"u32"],[6,"TestStatus",91],[5,"TestResult",91]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKAAEQAAAAAAAwAFAAoAAAAMAAIAEgAAABUABgAfABMANAAAADsAAAA9ACAAYAAAAGIACQBtAAIAdwADAH8AHwCgAAoArAAZAA=="}],\
-["scarb_native_dump",{"t":"HCPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFFNNNNNNNNNNHNOOHHNNNNONNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestSyscallHandler","TestsSummary","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","call_contract","deploy","display_tests_summary","emit_event","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","from","gas_usage","get_block_hash","get_execution_info","get_execution_info_v2","ignored","into","into","into","into","keccak","library_call","passed","replace_class","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_mul","secp256k1_new","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_mul","secp256r1_new","send_message_to_l1","status","storage_read","storage_write","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip"],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[54,"scarb_native_dump::utils::test"],[160,"anyhow"],[161,"dyn_clone::sealed"],[162,"cairo_lang_sierra::program"],[163,"core::fmt"],[164,"cairo_felt::lib_bigint_felt"],[165,"alloc::vec::into_iter"],[166,"alloc::string"],[167,"cairo_native::values"],[168,"starknet_types_core::felt"],[169,"alloc::vec"],[170,"cairo_native::execution_result"],[171,"cairo_lang_runner"],[172,"core::option"],[173,"core::result"],[174,"alloc::boxed"],[175,"std::collections::hash::map"],[176,"alloc::collections::vec_deque"],[177,"clap_builder::builder::possible_value"],[178,"core::any"],[179,"cairo_native::starknet"],[180,"cairo_lang_test_plugin"],[181,"scarb_metadata"],[182,"cairo_lang_test_plugin::test_config"],[183,"cairo_lang_sierra::ids"],[184,"cairo_lang_sierra::extensions::modules::gas"],[185,"cairo_lang_utils::ordered_hash_map"]],"i":[0,0,4,4,0,0,4,45,4,45,4,4,4,0,4,0,45,4,45,4,0,45,0,45,45,45,45,45,45,45,4,4,4,4,4,4,4,45,0,4,4,45,4,45,4,45,4,45,4,45,4,4,45,4,49,49,0,0,0,0,31,50,49,27,31,50,49,27,27,27,0,27,31,31,0,0,31,50,49,27,50,27,27,27,31,31,50,49,27,27,27,31,27,31,31,31,31,31,31,31,50,50,50,50,50,50,50,49,49,49,49,49,49,49,27,27,27,27,27,27,27,0,27,27,27,27,27,27,27,27,27,27,27,50,27,27,31,50,49,27,31,50,49,27,31,50,49,27,31,50,49,27,31,50,49,27,31,50,49,27],"f":"{{}{{d{b}}}}`````{{cf}b{}}{ce{}{}}000{hh}{{ce}b{}{}}{{jl}{{d{n}}}}{{hA`}Ab}{{{Af{Ad}}}Ah}{cc{}}066{Aj{{An{Al}}}}`{B`{{d{Bb}}}}{{c{Bd{e}}}{{Bf{{Bd{e}}g}}}{}{}{}}{{c{Bh{e}}}{{Bf{{Bh{e}}g}}}{}{}{}}{{c{Bj{eg}}}{{Bf{{Bj{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Bf{{An{e}}g}}}{}{}{}}{{c{Bl{eg}}}{{Bf{{Bl{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{Bf{{Bn{e}}g}}}{}{}{}}{{c{Bf{eg}}}{{Bf{{Bf{eg}}i}}}{}{}{}{}}5346012``?{h{{Bd{C`}}}}{c{{Bf{e}}}{}{}}000{cCb{}}0{ce{}{}}000{{}{{Cd{h}}}}11``````11111111{{CfAlAl{Cd{Al}}Ch}{{Cj{{An{Al}}}}}}{{CfAlAl{Cd{Al}}ClCh}{{Cj{{Bl{Al{An{Al}}}}}}}}{{CnD`}b}{{Cf{Cd{Al}}{Cd{Al}}Ch}{{Cj{b}}}}``{{DbClClAh}{{Bl{DbD`}}}}{Dd{{An{Df}}}}{cc{}}000`{{CfDhCh}{{Cj{Al}}}}{{CfCh}{{Cj{Dj}}}}{{CfCh}{{Cj{Dl}}}}`;;;;{{Cf{Cd{Dh}}Ch}{{Cj{Dn}}}}:`{{CfAlCh}{{Cj{b}}}}{{c{Bj{eg}}}{{Bf{{Bj{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Bf{{An{e}}g}}}{}{}{}}{{c{Bl{eg}}}{{Bf{{Bl{eg}}i}}}{}{}{}{}}{{c{Bn{e}}}{{Bf{{Bn{e}}g}}}{}{}{}}{{c{Bf{eg}}}{{Bf{{Bf{eg}}i}}}{}{}{}{}}{{c{Bh{e}}}{{Bf{{Bh{e}}g}}}{}{}{}}{{c{Bd{e}}}{{Bf{{Bd{e}}g}}}{}{}{}}065431231245601032645{{{An{{Bl{AhE`}}}}j{Eh{Eb{Eh{EdEf}}}}Ej}{{d{Cn}}}}{{CfElElCh}{{Cj{El}}}}{{CfDnClCh}{{Cj{{Bd{El}}}}}}{{CfElCh}{{Cj{{Bl{DnDn}}}}}}{{CfElDnCh}{{Cj{El}}}}{{CfDnDnCh}{{Cj{{Bd{El}}}}}}{{CfEnEnCh}{{Cj{En}}}}{{CfDnClCh}{{Cj{{Bd{En}}}}}}{{CfEnCh}{{Cj{{Bl{DnDn}}}}}}{{CfEnDnCh}{{Cj{En}}}}{{CfDnDnCh}{{Cj{{Bd{En}}}}}}{{CfAl{Cd{Al}}Ch}{{Cj{b}}}}`{{CfF`AlCh}{{Cj{Al}}}}{{CfF`AlAlCh}{{Cj{b}}}}{c{{Bf{e}}}{}{}}0000000{cCb{}}000{ce{}{}}00000000000","D":"Cd","p":[[1,"unit"],[8,"Result",160],[5,"Private",161],[6,"RunMode",2],[5,"Program",162],[1,"str"],[8,"Function",162],[5,"Formatter",163],[8,"Result",163],[5,"Felt252",164],[5,"IntoIter",165],[5,"String",166],[6,"JitValue",167],[5,"Felt",168],[5,"Vec",169],[5,"ExecutionResult",170],[6,"RunResultValue",171],[6,"Option",172],[6,"Result",173],[5,"Box",174],[5,"HashMap",175],[1,"tuple"],[5,"VecDeque",176],[5,"PossibleValue",177],[5,"TypeId",178],[1,"slice"],[5,"TestSyscallHandler",54],[1,"u128"],[8,"SyscallResult",179],[1,"bool"],[5,"TestsSummary",54],[1,"usize"],[5,"TestCompilation",180],[5,"PackageMetadata",181],[5,"TargetMetadata",181],[1,"u64"],[5,"ExecutionInfo",179],[5,"ExecutionInfoV2",179],[5,"U256",179],[5,"TestConfig",182],[5,"FunctionId",183],[6,"CostTokenType",184],[1,"i32"],[5,"OrderedHashMap",185],[5,"RunArgs",2],[5,"Secp256k1Point",179],[5,"Secp256r1Point",179],[1,"u32"],[6,"TestStatus",54],[5,"TestResult",54]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAIYADAAAAAAAAgALAA8AAAAWAAAAGAAgADsAAAA9AAkASAACAFIAAwBaAB8AewAKAIcAGQA="}],\
-["scarb_native_test",{"t":"FNNNNNNNNNONNNNNOONHOONNNNNNNONNNNNNNNCNPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFFNNNNNNNNNNHNOOHHNNNNONNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","command","command_for_update","filter","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","into","main","opt_level","packages_filter","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","to_owned","try_from","try_into","type_id","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestSyscallHandler","TestsSummary","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","call_contract","deploy","display_tests_summary","emit_event","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","from","gas_usage","get_block_hash","get_execution_info","get_execution_info_v2","ignored","into","into","into","into","keccak","library_call","passed","replace_class","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_mul","secp256k1_new","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_mul","secp256r1_new","send_message_to_l1","status","storage_read","storage_write","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip"],"q":[[0,"scarb_native_test"],[40,"scarb_native_test::utils"],[92,"scarb_native_test::utils::test"],[198,"dyn_clone::sealed"],[199,"clap_builder::builder::command"],[200,"core::fmt"],[201,"clap_builder::parser::matches::arg_matches"],[202,"clap_builder"],[203,"core::result"],[204,"clap_builder::util::id"],[205,"core::option"],[206,"anyhow"],[207,"alloc::boxed"],[208,"alloc::collections::vec_deque"],[209,"alloc::vec"],[210,"std::collections::hash::map"],[211,"core::any"],[212,"cairo_lang_sierra::program"],[213,"cairo_felt::lib_bigint_felt"],[214,"alloc::vec::into_iter"],[215,"alloc::string"],[216,"cairo_native::values"],[217,"starknet_types_core::felt"],[218,"cairo_native::execution_result"],[219,"cairo_lang_runner"],[220,"clap_builder::builder::possible_value"],[221,"cairo_native::starknet"],[222,"cairo_lang_test_plugin"],[223,"scarb_metadata"],[224,"cairo_lang_test_plugin::test_config"],[225,"cairo_lang_sierra::ids"],[226,"cairo_lang_sierra::extensions::modules::gas"],[227,"cairo_lang_utils::ordered_hash_map"]],"i":[0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,19,19,0,0,19,50,19,50,19,19,19,0,19,0,50,19,50,19,0,50,0,50,50,50,50,50,50,50,19,19,19,19,19,19,19,50,0,19,19,50,19,50,19,50,19,50,19,50,19,19,50,19,54,54,0,0,0,0,36,55,54,32,36,55,54,32,32,32,0,32,36,36,0,0,36,55,54,32,55,32,32,32,36,36,55,54,32,32,32,36,32,36,36,36,36,36,36,36,55,55,55,55,55,55,55,54,54,54,54,54,54,54,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,55,32,32,36,55,54,32,36,55,54,32,36,55,54,32,36,55,54,32,36,55,54,32,36,55,54,32],"f":"`{{cb}d{}}{ff}0{ce{}{}}0{hh}{{ce}d{}{}}{{}f}0`{{hj}l}{cc{}}{n{{Ab{hA`}}}}0{{}{{Af{Ad}}}}``7{{}{{Ah{d}}}}``{{c{Af{e}}}{{Ab{{Af{e}}g}}}{}{}{}}{{c{Aj{e}}}{{Ab{{Aj{e}}g}}}{}{}{}}{{c{Ab{eg}}}{{Ab{{Ab{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{Ab{{Al{e}}g}}}{}{}{}}{{c{An{eg}}}{{Ab{{An{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{Ab{{B`{e}}g}}}{}{}{}}{{c{Bb{eg}}}{{Ab{{Bb{eg}}i}}}{}{}{}{}}`?{c{{Ab{e}}}{}{}}0{cBd{}}{ce{}{}}0{{hn}{{Ab{dA`}}}}0`1````{{cb}d{}}2222{BfBf}{{ce}d{}{}}{{BhBj}{{Ah{Bl}}}}{{Bfj}l}{{{C`{Bn}}}Cb}{cc{}}088{Cd{{B`{Cf}}}}`{Ch{{Ah{Cj}}}}{{c{Af{e}}}{{Ab{{Af{e}}g}}}{}{}{}}{{c{Aj{e}}}{{Ab{{Aj{e}}g}}}{}{}{}}{{c{Ab{eg}}}{{Ab{{Ab{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{Ab{{Al{e}}g}}}{}{}{}}{{c{An{eg}}}{{Ab{{An{eg}}i}}}{}{}{}{}}{{c{Bb{eg}}}{{Ab{{Bb{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{Ab{{B`{e}}g}}}{}{}{}}3610245``{ce{}{}}{Bf{{Af{Cl}}}}{c{{Ab{e}}}{}{}}000{cBd{}}03333{{}{{Cn{Bf}}}}44``````44444444{{D`CfCf{Cn{Cf}}Db}{{Dd{{B`{Cf}}}}}}{{D`CfCf{Cn{Cf}}DfDb}{{Dd{{An{Cf{B`{Cf}}}}}}}}{{DhDj}d}{{D`{Cn{Cf}}{Cn{Cf}}Db}{{Dd{d}}}}``{{DlDfDfCb}{{An{DlDj}}}}{Dn{{B`{E`}}}}{cc{}}000`{{D`EbDb}{{Dd{Cf}}}}{{D`Db}{{Dd{Ed}}}}{{D`Db}{{Dd{Ef}}}}`>>>>{{D`{Cn{Eb}}Db}{{Dd{Eh}}}}:`{{D`CfDb}{{Dd{d}}}}{{c{Al{e}}}{{Ab{{Al{e}}g}}}{}{}{}}{{c{Bb{eg}}}{{Ab{{Bb{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{Ab{{B`{e}}g}}}{}{}{}}{{c{An{eg}}}{{Ab{{An{eg}}i}}}{}{}{}{}}{{c{Ab{eg}}}{{Ab{{Ab{eg}}i}}}{}{}{}{}}{{c{Aj{e}}}{{Ab{{Aj{e}}g}}}{}{}{}}{{c{Af{e}}}{{Ab{{Af{e}}g}}}{}{}{}}054362121634503012654{{{B`{{An{CbEj}}}}Bh{Fb{El{Fb{EnF`}}}}Fd}{{Ah{Dh}}}}{{D`FfFfDb}{{Dd{Ff}}}}{{D`EhDfDb}{{Dd{{Af{Ff}}}}}}{{D`FfDb}{{Dd{{An{EhEh}}}}}}{{D`FfEhDb}{{Dd{Ff}}}}{{D`EhEhDb}{{Dd{{Af{Ff}}}}}}{{D`FhFhDb}{{Dd{Fh}}}}{{D`EhDfDb}{{Dd{{Af{Fh}}}}}}{{D`FhDb}{{Dd{{An{EhEh}}}}}}{{D`FhEhDb}{{Dd{Fh}}}}{{D`EhEhDb}{{Dd{{Af{Fh}}}}}}{{D`Cf{Cn{Cf}}Db}{{Dd{d}}}}`{{D`FjCfDb}{{Dd{Cf}}}}{{D`FjCfCfDb}{{Dd{d}}}}{c{{Ab{e}}}{}{}}0000000{cBd{}}000{ce{}{}}00000000000","D":"Db","p":[[5,"Private",198],[1,"unit"],[5,"Command",199],[5,"Args",0],[5,"Formatter",200],[8,"Result",200],[5,"ArgMatches",201],[8,"Error",202],[6,"Result",203],[5,"Id",204],[6,"Option",205],[8,"Result",206],[5,"Box",207],[5,"VecDeque",208],[1,"tuple"],[5,"Vec",209],[5,"HashMap",210],[5,"TypeId",211],[6,"RunMode",40],[5,"Program",212],[1,"str"],[8,"Function",212],[5,"Felt252",213],[5,"IntoIter",214],[5,"String",215],[6,"JitValue",216],[5,"Felt",217],[5,"ExecutionResult",218],[6,"RunResultValue",219],[5,"PossibleValue",220],[1,"slice"],[5,"TestSyscallHandler",92],[1,"u128"],[8,"SyscallResult",221],[1,"bool"],[5,"TestsSummary",92],[1,"usize"],[5,"TestCompilation",222],[5,"PackageMetadata",223],[5,"TargetMetadata",223],[1,"u64"],[5,"ExecutionInfo",221],[5,"ExecutionInfoV2",221],[5,"U256",221],[5,"TestConfig",224],[5,"FunctionId",225],[6,"CostTokenType",226],[1,"i32"],[5,"OrderedHashMap",227],[5,"RunArgs",40],[5,"Secp256k1Point",221],[5,"Secp256r1Point",221],[1,"u32"],[6,"TestStatus",92],[5,"TestResult",92]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKUAEQAAAAAAAgAIAAwAAAAOAAIAFAAAABYABwAfABQANQAAADwAAAA+ACAAYQAAAGMACQBuAAIAeAADAIAAHwChAAoArQAZAA=="}]\
+["cairo_native_test",{"t":"FONNNNNNONNNNNOONHOONNNNNNNOOONNNNNNNCNPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFNNNNNNHOOHHNNNOONNNONNNNNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","augment_args","augment_args_for_update","borrow","borrow_mut","command","command_for_update","filter","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","into","main","opt_level","path","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","single_file","starknet","try_from","try_into","type_id","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","display_tests_summary","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","into","into","into","passed","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"cairo_native_test"],[39,"cairo_native_test::utils"],[91,"cairo_native_test::utils::test"],[157,"clap_builder::builder::command"],[158,"core::fmt"],[159,"clap_builder::parser::matches::arg_matches"],[160,"clap_builder"],[161,"core::result"],[162,"clap_builder::util::id"],[163,"core::option"],[164,"anyhow"],[165,"alloc::collections::vec_deque"],[166,"std::collections::hash::map"],[167,"alloc::vec"],[168,"alloc::boxed"],[169,"core::any"],[170,"dyn_clone::sealed"],[171,"cairo_lang_sierra::program"],[172,"cairo_felt::lib_bigint_felt"],[173,"alloc::vec::into_iter"],[174,"alloc::string"],[175,"cairo_native::values"],[176,"starknet_types_core::felt"],[177,"cairo_native::execution_result"],[178,"cairo_lang_runner"],[179,"clap_builder::builder::possible_value"],[180,"cairo_lang_test_plugin"],[181,"scarb_metadata"],[182,"cairo_lang_test_plugin::test_config"],[183,"cairo_lang_sierra::ids"],[184,"cairo_lang_sierra::extensions::modules::gas"],[185,"cairo_lang_utils::ordered_hash_map"]],"i":[0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,19,19,0,0,19,43,19,43,19,19,19,0,19,0,43,19,43,19,0,43,0,43,43,43,43,43,43,43,19,19,19,19,19,19,19,43,0,19,19,43,19,43,19,43,19,43,19,43,19,19,43,19,44,44,0,0,0,32,45,44,32,45,44,0,32,32,0,0,32,45,44,45,32,32,45,44,32,32,32,32,32,32,32,32,45,45,45,45,45,45,45,44,44,44,44,44,44,44,0,45,32,45,44,32,45,44,32,45,44,32,45,44,32,45,44,32,45,44],"f":"``{bb}0{ce{}{}}0{{}b}0`{{df}h}{cc{}}{j{{n{dl}}}}0{{}{{Ab{A`}}}}``5{{}{{Af{Ad}}}}``{{c{Ah{e}}}{{n{{Ah{e}}g}}}{}{}{}}{{c{Aj{eg}}}{{n{{Aj{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{n{{Al{e}}g}}}{}{}{}}{{c{An{eg}}}{{n{{An{eg}}i}}}{}{}{}{}}{{c{n{eg}}}{{n{{n{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{n{{B`{e}}g}}}{}{}{}}{{c{Ab{e}}}{{n{{Ab{e}}g}}}{}{}{}}```{c{{n{e}}}{}{}}0{cBb{}}??{{dj}{{n{Adl}}}}0`{ce{}{}}````{{cBd}Ad{}}1111{BfBf}{{ce}Ad{}{}}{{BhBj}{{Af{Bl}}}}{{Bff}h}{{{C`{Bn}}}Cb}{cc{}}077{Cd{{Al{Cf}}}}`{Ch{{Af{Cj}}}}{{c{Aj{eg}}}{{n{{Aj{eg}}i}}}{}{}{}{}}{{c{Al{e}}}{{n{{Al{e}}g}}}{}{}{}}?{{c{An{eg}}}{{n{{An{eg}}i}}}{}{}{}{}}{{c{B`{e}}}{{n{{B`{e}}g}}}{}{}{}}{{c{Ah{e}}}{{n{{Ah{e}}g}}}{}{}{}}{{c{n{eg}}}{{n{{n{eg}}i}}}{}{}{}{}}{{c{Ab{e}}}{{n{{Ab{e}}g}}}{}{}{}}631245``{ce{}{}}{Bf{{Ab{Cl}}}}{c{{n{e}}}{}{}}000{cBb{}}03333{{}{{Cn{Bf}}}}44`````444444{{D`Db}Ad}``{{DdDfDfCb}{{An{DdDb}}}}{Dh{{Al{Dj}}}}{cc{}}00``888`?:<9=;>?9<:;=>;:<=>?9{{{Al{{An{CbDl}}}}Bh{Ed{Dn{Ed{E`Eb}}}}Ef}{{Af{D`}}}}`777777666999999999","D":"Df","p":[[5,"Command",157],[5,"Args",0],[5,"Formatter",158],[8,"Result",158],[5,"ArgMatches",159],[8,"Error",160],[6,"Result",161],[5,"Id",162],[6,"Option",163],[1,"unit"],[8,"Result",164],[5,"VecDeque",165],[5,"HashMap",166],[5,"Vec",167],[1,"tuple"],[5,"Box",168],[5,"TypeId",169],[5,"Private",170],[6,"RunMode",39],[5,"Program",171],[1,"str"],[8,"Function",171],[5,"Felt252",172],[5,"IntoIter",173],[5,"String",174],[6,"JitValue",175],[5,"Felt",176],[5,"ExecutionResult",177],[6,"RunResultValue",178],[5,"PossibleValue",179],[1,"slice"],[5,"TestsSummary",91],[1,"usize"],[5,"TestCompilation",180],[1,"bool"],[5,"PackageMetadata",181],[5,"TargetMetadata",181],[5,"TestConfig",182],[5,"FunctionId",183],[6,"CostTokenType",184],[1,"i32"],[5,"OrderedHashMap",185],[5,"RunArgs",39],[6,"TestStatus",91],[5,"TestResult",91]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHoADwAAAAAAAwAFAAoAAAAMAAIAEgAAABUABgAfABMANAAAADsAAAA9ACAAYQAFAGgAAQBwAAAAdAAVAIwAEQA="}],\
+["scarb_native_dump",{"t":"HCPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFNNNNNNHOOHHNNNOONNNONNNNNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","display_tests_summary","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","into","into","into","passed","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[54,"scarb_native_dump::utils::test"],[120,"anyhow"],[121,"dyn_clone::sealed"],[122,"cairo_lang_sierra::program"],[123,"core::fmt"],[124,"cairo_felt::lib_bigint_felt"],[125,"alloc::vec::into_iter"],[126,"alloc::string"],[127,"cairo_native::values"],[128,"starknet_types_core::felt"],[129,"alloc::vec"],[130,"cairo_native::execution_result"],[131,"cairo_lang_runner"],[132,"std::collections::hash::map"],[133,"core::result"],[134,"core::option"],[135,"alloc::boxed"],[136,"alloc::collections::vec_deque"],[137,"clap_builder::builder::possible_value"],[138,"core::any"],[139,"cairo_lang_test_plugin"],[140,"scarb_metadata"],[141,"cairo_lang_test_plugin::test_config"],[142,"cairo_lang_sierra::ids"],[143,"cairo_lang_sierra::extensions::modules::gas"],[144,"cairo_lang_utils::ordered_hash_map"]],"i":[0,0,4,4,0,0,4,38,4,38,4,4,4,0,4,0,38,4,38,4,0,38,0,38,38,38,38,38,38,38,4,4,4,4,4,4,4,38,0,4,4,38,4,38,4,38,4,38,4,38,4,4,38,4,39,39,0,0,0,27,40,39,27,40,39,0,27,27,0,0,27,40,39,40,27,27,40,39,27,27,27,27,27,27,27,27,40,40,40,40,40,40,40,39,39,39,39,39,39,39,0,40,27,40,39,27,40,39,27,40,39,27,40,39,27,40,39,27,40,39],"f":"{{}{{d{b}}}}`````{{cf}b{}}{ce{}{}}000{hh}{{ce}b{}{}}{{jl}{{d{n}}}}{{hA`}Ab}{{{Af{Ad}}}Ah}{cc{}}066{Aj{{An{Al}}}}`{B`{{d{Bb}}}}{{c{Bd{eg}}}{{Bf{{Bd{eg}}i}}}{}{}{}{}}{{c{Bh{e}}}{{Bf{{Bh{e}}g}}}{}{}{}}{{c{Bj{e}}}{{Bf{{Bj{e}}g}}}{}{}{}}{{c{Bf{eg}}}{{Bf{{Bf{eg}}i}}}{}{}{}{}}{{c{Bl{e}}}{{Bf{{Bl{e}}g}}}{}{}{}}{{c{Bn{eg}}}{{Bf{{Bn{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Bf{{An{e}}g}}}{}{}{}}5210634``?{h{{Bh{C`}}}}{c{{Bf{e}}}{}{}}000{cCb{}}0{ce{}{}}000{{}{{Cd{h}}}}11`````111111{{CfCh}b}``{{CjClClAh}{{Bn{CjCh}}}}{Cn{{An{D`}}}}{cc{}}00``555`9:;<=>?9=<;:?>:;>?=<9{{{An{{Bn{AhDb}}}}j{Dj{Dd{Dj{DfDh}}}}Dl}{{d{Cf}}}}`888888777666666666","D":"C`","p":[[1,"unit"],[8,"Result",120],[5,"Private",121],[6,"RunMode",2],[5,"Program",122],[1,"str"],[8,"Function",122],[5,"Formatter",123],[8,"Result",123],[5,"Felt252",124],[5,"IntoIter",125],[5,"String",126],[6,"JitValue",127],[5,"Felt",128],[5,"Vec",129],[5,"ExecutionResult",130],[6,"RunResultValue",131],[5,"HashMap",132],[6,"Result",133],[6,"Option",134],[5,"Box",135],[5,"VecDeque",136],[1,"tuple"],[5,"PossibleValue",137],[5,"TypeId",138],[1,"slice"],[5,"TestsSummary",54],[1,"usize"],[5,"TestCompilation",139],[1,"bool"],[5,"PackageMetadata",140],[5,"TargetMetadata",140],[5,"TestConfig",141],[5,"FunctionId",142],[6,"CostTokenType",143],[1,"i32"],[5,"OrderedHashMap",144],[5,"RunArgs",2],[6,"TestStatus",54],[5,"TestResult",54]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGAACgAAAAAAAgALAA8AAAAWAAAAGAAgADwABQBDAAEASwAAAE8AFQBnABEA"}],\
+["scarb_native_test",{"t":"FNNNNNNNNNONNNNNOONHOONNNNNNNONNNNNNNNCNPPFGNNNNNNNHNHNNNNHOHNNNNNNNNNNNNNNOCNNNNNNNNNNNNNNNPPFGFNNNNNNHOOHHNNNOONNNONNNNNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNN","n":["Args","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","command","command_for_update","filter","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","into","main","opt_level","packages_filter","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","to_owned","try_from","try_into","type_id","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","find_function","fmt","format_for_panic","from","from","into","into","jitvalue_to_felt","opt_level","result_to_runresult","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","display_tests_summary","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","into","into","into","passed","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","rewrite","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"scarb_native_test"],[40,"scarb_native_test::utils"],[92,"scarb_native_test::utils::test"],[158,"dyn_clone::sealed"],[159,"clap_builder::builder::command"],[160,"core::fmt"],[161,"clap_builder::parser::matches::arg_matches"],[162,"clap_builder"],[163,"core::result"],[164,"clap_builder::util::id"],[165,"core::option"],[166,"anyhow"],[167,"std::collections::hash::map"],[168,"alloc::boxed"],[169,"alloc::vec"],[170,"alloc::collections::vec_deque"],[171,"core::any"],[172,"cairo_lang_sierra::program"],[173,"cairo_felt::lib_bigint_felt"],[174,"alloc::vec::into_iter"],[175,"alloc::string"],[176,"cairo_native::values"],[177,"starknet_types_core::felt"],[178,"cairo_native::execution_result"],[179,"cairo_lang_runner"],[180,"clap_builder::builder::possible_value"],[181,"cairo_lang_test_plugin"],[182,"scarb_metadata"],[183,"cairo_lang_test_plugin::test_config"],[184,"cairo_lang_sierra::ids"],[185,"cairo_lang_sierra::extensions::modules::gas"],[186,"cairo_lang_utils::ordered_hash_map"]],"i":[0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,19,19,0,0,19,43,19,43,19,19,19,0,19,0,43,19,43,19,0,43,0,43,43,43,43,43,43,43,19,19,19,19,19,19,19,43,0,19,19,43,19,43,19,43,19,43,19,43,19,19,43,19,44,44,0,0,0,32,45,44,32,45,44,0,32,32,0,0,32,45,44,45,32,32,45,44,32,32,32,32,32,32,32,32,45,45,45,45,45,45,45,44,44,44,44,44,44,44,0,45,32,45,44,32,45,44,32,45,44,32,45,44,32,45,44,32,45,44],"f":"`{{cb}d{}}{ff}0{ce{}{}}0{hh}{{ce}d{}{}}{{}f}0`{{hj}l}{cc{}}{n{{Ab{hA`}}}}0{{}{{Af{Ad}}}}``7{{}{{Ah{d}}}}``{{c{Aj{eg}}}{{Ab{{Aj{eg}}i}}}{}{}{}{}}{{c{Al{eg}}}{{Ab{{Al{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Ab{{An{e}}g}}}{}{}{}}{{c{Af{e}}}{{Ab{{Af{e}}g}}}{}{}{}}{{c{B`{e}}}{{Ab{{B`{e}}g}}}{}{}{}}{{c{Ab{eg}}}{{Ab{{Ab{eg}}i}}}{}{}{}{}}{{c{Bb{e}}}{{Ab{{Bb{e}}g}}}{}{}{}}`?{c{{Ab{e}}}{}{}}0{cBd{}}{ce{}{}}0{{hn}{{Ab{dA`}}}}0`1````{{cb}d{}}2222{BfBf}{{ce}d{}{}}{{BhBj}{{Ah{Bl}}}}{{Bfj}l}{{{C`{Bn}}}Cb}{cc{}}088{Cd{{B`{Cf}}}}`{Ch{{Ah{Cj}}}}?{{c{Af{e}}}{{Ab{{Af{e}}g}}}{}{}{}}{{c{Aj{eg}}}{{Ab{{Aj{eg}}i}}}{}{}{}{}}{{c{An{e}}}{{Ab{{An{e}}g}}}{}{}{}}{{c{Ab{eg}}}{{Ab{{Ab{eg}}i}}}{}{}{}{}}{{c{Bb{e}}}{{Ab{{Bb{e}}g}}}{}{}{}}{{c{Al{eg}}}{{Ab{{Al{eg}}i}}}{}{}{}{}}53210{{c{B`{e}}}{{Ab{{B`{e}}g}}}{}{}{}}5``{ce{}{}}{Bf{{Af{Cl}}}}{c{{Ab{e}}}{}{}}000{cBd{}}03333{{}{{Cn{Bf}}}}44`````444444{{D`Db}d}``{{DdDfDfCb}{{Al{DdDb}}}}{Dh{{B`{Dj}}}}{cc{}}00``888`<=?>9;:9?=<;:>9?>=<;:{{{B`{{Al{CbDl}}}}Bh{Ed{Dn{Ed{E`Eb}}}}Ef}{{Ah{D`}}}}`777777666999999999","D":"Cn","p":[[5,"Private",158],[1,"unit"],[5,"Command",159],[5,"Args",0],[5,"Formatter",160],[8,"Result",160],[5,"ArgMatches",161],[8,"Error",162],[6,"Result",163],[5,"Id",164],[6,"Option",165],[8,"Result",166],[5,"HashMap",167],[1,"tuple"],[5,"Box",168],[5,"Vec",169],[5,"VecDeque",170],[5,"TypeId",171],[6,"RunMode",40],[5,"Program",172],[1,"str"],[8,"Function",172],[5,"Felt252",173],[5,"IntoIter",174],[5,"String",175],[6,"JitValue",176],[5,"Felt",177],[5,"ExecutionResult",178],[6,"RunResultValue",179],[5,"PossibleValue",180],[1,"slice"],[5,"TestsSummary",92],[1,"usize"],[5,"TestCompilation",181],[1,"bool"],[5,"PackageMetadata",182],[5,"TargetMetadata",182],[5,"TestConfig",183],[5,"FunctionId",184],[6,"CostTokenType",185],[1,"i32"],[5,"OrderedHashMap",186],[5,"RunArgs",40],[6,"TestStatus",92],[5,"TestResult",92]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAH8ADwAAAAAAAgAIAAwAAAAOAAIAFAAAABYABwAfABQANQAAADwAAAA+ACAAYgAFAGkAAQBxAAAAdQAVAI0AEQA="}]\
 ]'));
 if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
 else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/search.desc/cairo_native/cairo_native-desc-0-.js b/search.desc/cairo_native/cairo_native-desc-0-.js
index fb9402c76..4f092c0d4 100644
--- a/search.desc/cairo_native/cairo_native-desc-0-.js
+++ b/search.desc/cairo_native/cairo_native-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("cairo_native", 0, "Cairo Sierra to MLIR compiler and JIT engine\nA error from the LLVM API.\nOptimization levels.\nRun the compiler on a program. The compiled program is …\nExtracts useful debugging information from cairo programs …\nVarious error types used thorough the crate.\nExecutors\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCompiler libfunc infrastructure\nCode generation metadata\nConverts a MLIR module to a compile object, that can be …\nLinks the passed object into a shared library, stored on …\nStarknet related code for cairo_native\nCompiler type infrastructure\nVarious utilities\nJIT params and return values de/serialization\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nA Cache for programs with the same context.\nReturns the argument unchanged.\nCalls U::from(self).\nContext of IRs, dialects and passes for Cairo programs …\nCompiles a sierra program into MLIR and then lowers to …\nCompiles a sierra program into MLIR and then lowers to …\nReturns the argument unchanged.\nInitialize an MLIR context.\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nContains the error value\nContains the success value\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nStarknet contract execution result.\nThe result of the JIT execution.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConvert a [ExecuteResult] to a [NativeExecutionResult]\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA MLIR JIT execution engine in the context of Cairo Native.\nThe cairo native executor, either AOT or JIT based.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nUtility to convert a NativeModule into an AotNativeExecutor…\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nA libfunc branching target.\nError type returned by this trait’s methods.\nA block within the current libfunc.\nGeneration of MLIR operations from their Sierra …\nHelper struct which contains logic generation for extra …\nA statement’s branch target by its index.\nAP tracking libfuncs\nInserts a new block after all the current libfunc’s …\nArray libfuncs\nBitwise libfuncs\nBoolean libfuncs\nBox libfuncs\nCreates an unconditional branching operation out of the …\nBranch alignment libfunc\nGenerate the MLIR operations.\nBytes31-related libfuncs\nCasting libfuncs\nCreates a conditional binary branching operation, …\nConst libfuncs\nBranch alignment libfunc\nDebug libfuncs\nAP tracking libfuncs\nState value duplication libfunc\nElliptic curve libfuncs\nEnum-related libfuncs\nFelt-related libfuncs\nFelt dictionary libfuncs\nFelt dictionary entry libfuncs\nReturns the argument unchanged.\nReturns the argument unchanged.\nFunction call libfuncs\nGas management libfuncs\nReturn the initialization block.\nCalls U::from(self).\nCalls U::from(self).\nReturn the target function if the statement is a function …\nMemory-related libfuncs\nNullable libfuncs\nPedersen hashing libfuncs\nPoseidon hashing libfuncs\ni128-related libfuncs\ni16-related libfuncs\ni32-related libfuncs\ni64-related libfuncs\ni8-related libfuncs\nSnapshot taking libfuncs\nStarknet libfuncs\nStruct-related libfuncs\nCreates a conditional multi-branching operation, …\nu128-related libfuncs\nu16-related libfuncs\nu256-related libfuncs\nu32-related libfuncs\nu512-related libfuncs\nu64-related libfuncs\nu8-related libfuncs\nUnconditional jump libfunc\nNon-zero unwrapping libfuncs\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the disable_ap_tracking …\nGenerate MLIR operations for the enable_ap_tracking …\nGenerate MLIR operations for the revoke_ap_tracking. …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the array_append libfunc.\nGenerate MLIR operations for the array_get libfunc.\nGenerate MLIR operations for the array_len libfunc.\nGenerate MLIR operations for the array_new libfunc.\nGenerate MLIR operations for the array_pop_front libfunc.\nGenerate MLIR operations for the array_pop_front_consume …\nGenerate MLIR operations for the array_slice libfunc.\nGenerate MLIR operations for the array_snapshot_pop_back …\nGenerate MLIR operations for the array_snapshot_pop_front …\nGenerate MLIR operations for the span_from_tuple libfunc.\nGenerate MLIR operations for the bitwise libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bool_not_impl libfunc.\nGenerate MLIR operations for the unbox libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the into_box libfunc.\nGenerate MLIR operations for the unbox libfunc.\nGenerate MLIR operations for the branch_align libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bytes31_const libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the bytes31_to_felt252 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the downcast libfunc.\nGenerate MLIR operations for the upcast libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the const_as_box libfunc.\nGenerate MLIR operations for the const_as_immediate …\nGenerate MLIR operations for the coupon libfuncs. In …\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the drop libfunc.\nGenerate MLIR operations for the dup libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the ec_point_is_zero libfunc.\nGenerate MLIR operations for the ec_neg libfunc.\nGenerate MLIR operations for the ec_point_from_x_nz …\nGenerate MLIR operations for the ec_state_add libfunc.\nGenerate MLIR operations for the ec_state_add_mul libfunc.\nGenerate MLIR operations for the ec_state_try_finalize_nz …\nGenerate MLIR operations for the ec_state_init libfunc.\nGenerate MLIR operations for the ec_point_try_new_nz …\nGenerate MLIR operations for the ec_point_unwrap libfunc.\nGenerate MLIR operations for the ec_point_zero libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the enum_from_bounded_int …\nGenerate MLIR operations for the enum_init libfunc.\nGenerate MLIR operations for the enum_match libfunc.\nGenerate MLIR operations for the enum_snapshot_match …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the following libfuncs:\nGenerate MLIR operations for the felt252_const libfunc.\nGenerate MLIR operations for the felt252_is_zero libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the function_call libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the withdraw_gas_all libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the withdraw_gas libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the alloc_local libfunc.\nGenerate MLIR operations for the finalize_locals libfunc.\nGenerate MLIR operations for the rename libfunc.\nGenerate MLIR operations for the store_local libfunc.\nGenerate MLIR operations for the store_temp libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i128_const libfunc.\nGenerate MLIR operations for the i128_diff libfunc.\nGenerate MLIR operations for the i128_eq libfunc.\nGenerate MLIR operations for the i128_from_felt252 libfunc.\nGenerate MLIR operations for the i128_is_zero libfunc.\nGenerate MLIR operations for the i128 operation libfunc.\nGenerate MLIR operations for the i128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i16_const libfunc.\nGenerate MLIR operations for the i16_diff libfunc.\nGenerate MLIR operations for the i16_eq libfunc.\nGenerate MLIR operations for the i16_from_felt252 libfunc.\nGenerate MLIR operations for the i16_is_zero libfunc.\nGenerate MLIR operations for the i16 operation libfunc.\nGenerate MLIR operations for the i16_to_felt252 libfunc.\nGenerate MLIR operations for the i16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i32_const libfunc.\nGenerate MLIR operations for the i32_diff libfunc.\nGenerate MLIR operations for the i32_eq libfunc.\nGenerate MLIR operations for the i32_from_felt252 libfunc.\nGenerate MLIR operations for the i32_is_zero libfunc.\nGenerate MLIR operations for the i32 operation libfunc.\nGenerate MLIR operations for the i32_to_felt252 libfunc.\nGenerate MLIR operations for the i32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i64_const libfunc.\nGenerate MLIR operations for the i64_diff libfunc.\nGenerate MLIR operations for the i64_eq libfunc.\nGenerate MLIR operations for the i64_from_felt252 libfunc.\nGenerate MLIR operations for the i64_is_zero libfunc.\nGenerate MLIR operations for the i64 operation libfunc.\nGenerate MLIR operations for the i64_to_felt252 libfunc.\nGenerate MLIR operations for the i64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i8_const libfunc.\nGenerate MLIR operations for the i8_diff libfunc.\nGenerate MLIR operations for the i8_eq libfunc.\nGenerate MLIR operations for the i8_from_felt252 libfunc.\nGenerate MLIR operations for the i8_is_zero libfunc.\nGenerate MLIR operations for the i8 operation libfunc.\nGenerate MLIR operations for the i8_to_felt252 libfunc.\nGenerate MLIR operations for the i8_widemul libfunc.\nGenerate MLIR operations for the snapshot_take libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the struct_construct libfunc.\nGenerate MLIR operations for the struct_deconstruct …\nGenerate MLIR operations for the struct_construct libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u128_byte_reverse libfunc.\nGenerate MLIR operations for the u128_const libfunc.\nGenerate MLIR operations for the u128_safe_divmod libfunc.\nGenerate MLIR operations for the u128_equal libfunc.\nGenerate MLIR operations for the u128s_from_felt252 …\nGenerate MLIR operations for the u128_guarantee_mul …\nGenerate MLIR operations for the u128_guarantee_verify …\nGenerate MLIR operations for the u128_is_zero libfunc.\nGenerate MLIR operations for the u128_add and u128_sub …\nGenerate MLIR operations for the u128_sqrt libfunc.\nGenerate MLIR operations for the u128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u16_const libfunc.\nGenerate MLIR operations for the u16_safe_divmod libfunc.\nGenerate MLIR operations for the u16_eq libfunc.\nGenerate MLIR operations for the u16_from_felt252 libfunc.\nGenerate MLIR operations for the u16_is_zero libfunc.\nGenerate MLIR operations for the u16 operation libfunc.\nGenerate MLIR operations for the u16_sqrt libfunc.\nGenerate MLIR operations for the u16_to_felt252 libfunc.\nGenerate MLIR operations for the u16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u256_safe_divmod libfunc.\nGenerate MLIR operations for the u256_is_zero libfunc.\nGenerate MLIR operations for the u256_sqrt libfunc.\nGenerate MLIR operations for the u256_guarantee_inv_mod_n …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u32_const libfunc.\nGenerate MLIR operations for the u32_safe_divmod libfunc.\nGenerate MLIR operations for the u32_eq libfunc.\nGenerate MLIR operations for the u32_from_felt252 libfunc.\nGenerate MLIR operations for the u32_is_zero libfunc.\nGenerate MLIR operations for the u32 operation libfunc.\nGenerate MLIR operations for the u32_sqrt libfunc.\nGenerate MLIR operations for the u32_to_felt252 libfunc.\nGenerate MLIR operations for the u32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u512_safe_divmod_by_u256 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u64_const libfunc.\nGenerate MLIR operations for the u64_safe_divmod libfunc.\nGenerate MLIR operations for the u64_eq libfunc.\nGenerate MLIR operations for the u64_from_felt252 libfunc.\nGenerate MLIR operations for the u64_is_zero libfunc.\nGenerate MLIR operations for the u64 operation libfunc.\nGenerate MLIR operations for the u64_sqrt libfunc.\nGenerate MLIR operations for the u64_to_felt252 libfunc.\nGenerate MLIR operations for the u64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u8_const libfunc.\nGenerate MLIR operations for the u8_safe_divmod libfunc.\nGenerate MLIR operations for the u8_eq libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the u8_is_zero libfunc.\nGenerate MLIR operations for the u8 operation libfunc.\nGenerate MLIR operations for the u8_sqrt libfunc.\nGenerate MLIR operations for the u8_to_felt252 libfunc.\nGenerate MLIR operations for the u8_widemul libfunc.\nGenerate MLIR operations for the jump libfunc.\nGenerate MLIR operations for the unwrap_non_zero libfunc.\nMetadata container.\nDebug utilities\nReturns the argument unchanged.\nRetrieve a reference to some metadata.\nRetrieve a mutable reference to some metadata.\nInsert some metadata and return a mutable reference.\nCalls U::from(self).\nCreate an empty metadata container.\nFinite field prime modulo\nMemory allocation external bindings\nRemove some metadata and return its last value.\nRuntime library bindings\nTail recursion information\nPrints the given &str.\nDump a memory region at runtime.\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nHolds global gas info.\nError for metadata calculations.\nConfiguration for metadata computation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the initial value for the gas counter. If …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nPrime modulo number metadata.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the metadata from the prime number.\nReturn the stored prime number.\nMemory allocation realloc metadata.\nCalls the free function.\nReturns the argument unchanged.\nCalls U::from(self).\nRegister the bindings to the realloc C function and return …\nCalls the realloc function, returns a op with 1 result: an …\nRuntime library bindings metadata.\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_gas_refund() …\nRegister if necessary, then invoke the dict_get() function.\nRegister if necessary, then invoke the dict_insert() …\nReturns the argument unchanged.\nCalls U::from(self).\nRegister if necessary, then invoke the debug::print() …\nRegister if necessary, then invoke the ec_point_from_x_nz()…\nRegister if necessary, then invoke the …\nRegister if necessary, then invoke the ec_state_add() …\nRegister if necessary, then invoke the ec_state_add_mul() …\nRegister if necessary, then invoke the poseidon() function.\nRegister if necessary, then invoke the pedersen() function.\nRegister if necessary, then invoke the vtable_cheatcode() …\nReturns the argument unchanged.\nCalls U::from(self).\nThe tail recursion metadata.\nReturn the current depth counter value.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the tail recursion meta.\nReturn the recursion target block.\nReturn the return target block, if set.\nSet the return target block.\nA MLIR module in the context of Cairo Native. It is …\nReturns the argument unchanged.\nRetrieve a reference to some stored metadata.\nInsert some metadata for the program execution and return …\nCalls U::from(self).\nRemoves metadata\nContains the error value\nBinary representation of a Felt (in MLIR).\nContains the success value\nBinary representation of a u256 (in MLIR).\nRuntime function that calls the cheatcode syscall\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nError type returned by this trait’s methods.\nGeneration of MLIR types from their Sierra counterparts.\nArray type\nBitwise type\nBoundedInt type\nBox type\nBuild the MLIR type.\nBuiltin costs type\nbytes31 type\nCoupon type.\nElliptic curve operation type\nElliptic curve point type\nElliptic curve state type\nEnum type\nfelt252 type\nFelt dictionary type\nFelt dictionary entry type\nReturns the argument unchanged.\nGas builtin type\nIf the type is an integer type, return its width in bits.\nCalls U::from(self).\nReturn whether the type is a builtin.\nReturn whether the type requires a return pointer when …\nIf the type is an integer type, return if its signed.\nWhether the layout should be allocated in memory (either …\nReturn whether the Sierra type resolves to a zero-sized …\nGenerate the layout of the MLIR type.\nNon-zero type\nNullable type\nPedersen type\nPoseidon type\nBuiltin costs type\nSegment arena type\nSnapshot type\nSquashed Felt dictionary type\nStarknet types\nStruct type\nUnsigned 128-bit integer type\nUnsigned 128-bit multiplication guarantee type\nUnsigned 16-bit integer type\nUnsigned 32-bit integer type\nUnsigned 64-bit integer type\nUnsigned 8-bit integer type\nUninitialized type\nIf the type is a enum type, return all possible variants.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nAn MLIR type with its memory layout.\nBuild the MLIR type.\nExtract layout for the default enum representation, its …\nExtract the type and layout for the default enum …\nThe felt252 prime modulo.\nBuild the MLIR type.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nCompile a cairo program found at the given path to sierra.\nCreates the execution engine, with all symbols registered.\nReturn a type that calls a closure when formatted using …\nParse any type that can be a bigint to a felt that can be …\nParse a short string into a felt that can be used in the …\nParse a numeric string into felt, wrapping negatives …\nReturns the given entry point if present.\nReturns the given entry point if present.\nGiven a string representing a function name, searches in …\nReturns the argument unchanged.\nGenerate a function name.\nReturn the layout for an integer of arbitrary width.\nCalls U::from(self).\nCopied from std.\nEdit: Copied from the std lib.\nall elements need to be same type\nA JitValue is a value that can be passed to the JIT engine …\nUsed as return value for Nullables that are null.\nString to felt\nReturns the argument unchanged.\nCalls U::from(self).")
\ No newline at end of file
+searchState.loadedDescShard("cairo_native", 0, "Cairo Sierra to MLIR compiler and JIT engine\nA error from the LLVM API.\nOptimization levels.\nRun the compiler on a program. The compiled program is …\nExtracts useful debugging information from cairo programs …\nVarious error types used thorough the crate.\nExecutors\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCompiler libfunc infrastructure\nCode generation metadata\nConverts a MLIR module to a compile object, that can be …\nLinks the passed object into a shared library, stored on …\nStarknet related code for cairo_native\nA (somewhat) usable implementation of the starknet syscall …\nCompiler type infrastructure\nVarious utilities\nJIT params and return values de/serialization\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nA Cache for programs with the same context.\nReturns the argument unchanged.\nCalls U::from(self).\nContext of IRs, dialects and passes for Cairo programs …\nCompiles a sierra program into MLIR and then lowers to …\nCompiles a sierra program into MLIR and then lowers to …\nReturns the argument unchanged.\nInitialize an MLIR context.\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nContains the error value\nContains the success value\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nStarknet contract execution result.\nThe result of the JIT execution.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConvert a [ExecuteResult] to a [NativeExecutionResult]\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA MLIR JIT execution engine in the context of Cairo Native.\nThe cairo native executor, either AOT or JIT based.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nUtility to convert a NativeModule into an AotNativeExecutor…\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nA libfunc branching target.\nError type returned by this trait’s methods.\nA block within the current libfunc.\nGeneration of MLIR operations from their Sierra …\nHelper struct which contains logic generation for extra …\nA statement’s branch target by its index.\nAP tracking libfuncs\nInserts a new block after all the current libfunc’s …\nArray libfuncs\nBitwise libfuncs\nBoolean libfuncs\nBox libfuncs\nCreates an unconditional branching operation out of the …\nBranch alignment libfunc\nGenerate the MLIR operations.\nBytes31-related libfuncs\nCasting libfuncs\nCreates a conditional binary branching operation, …\nConst libfuncs\nBranch alignment libfunc\nDebug libfuncs\nAP tracking libfuncs\nState value duplication libfunc\nElliptic curve libfuncs\nEnum-related libfuncs\nFelt-related libfuncs\nFelt dictionary libfuncs\nFelt dictionary entry libfuncs\nReturns the argument unchanged.\nReturns the argument unchanged.\nFunction call libfuncs\nGas management libfuncs\nReturn the initialization block.\nCalls U::from(self).\nCalls U::from(self).\nReturn the target function if the statement is a function …\nMemory-related libfuncs\nNullable libfuncs\nPedersen hashing libfuncs\nPoseidon hashing libfuncs\ni128-related libfuncs\ni16-related libfuncs\ni32-related libfuncs\ni64-related libfuncs\ni8-related libfuncs\nSnapshot taking libfuncs\nStarknet libfuncs\nStruct-related libfuncs\nCreates a conditional multi-branching operation, …\nu128-related libfuncs\nu16-related libfuncs\nu256-related libfuncs\nu32-related libfuncs\nu512-related libfuncs\nu64-related libfuncs\nu8-related libfuncs\nUnconditional jump libfunc\nNon-zero unwrapping libfuncs\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the disable_ap_tracking …\nGenerate MLIR operations for the enable_ap_tracking …\nGenerate MLIR operations for the revoke_ap_tracking. …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the array_append libfunc.\nGenerate MLIR operations for the array_get libfunc.\nGenerate MLIR operations for the array_len libfunc.\nGenerate MLIR operations for the array_new libfunc.\nGenerate MLIR operations for the array_pop_front libfunc.\nGenerate MLIR operations for the array_pop_front_consume …\nGenerate MLIR operations for the array_slice libfunc.\nGenerate MLIR operations for the array_snapshot_pop_back …\nGenerate MLIR operations for the array_snapshot_pop_front …\nGenerate MLIR operations for the span_from_tuple libfunc.\nGenerate MLIR operations for the bitwise libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bool_not_impl libfunc.\nGenerate MLIR operations for the unbox libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the into_box libfunc.\nGenerate MLIR operations for the unbox libfunc.\nGenerate MLIR operations for the branch_align libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bytes31_const libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the bytes31_to_felt252 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the downcast libfunc.\nGenerate MLIR operations for the upcast libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the const_as_box libfunc.\nGenerate MLIR operations for the const_as_immediate …\nGenerate MLIR operations for the coupon libfuncs. In …\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the drop libfunc.\nGenerate MLIR operations for the dup libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the ec_point_is_zero libfunc.\nGenerate MLIR operations for the ec_neg libfunc.\nGenerate MLIR operations for the ec_point_from_x_nz …\nGenerate MLIR operations for the ec_state_add libfunc.\nGenerate MLIR operations for the ec_state_add_mul libfunc.\nGenerate MLIR operations for the ec_state_try_finalize_nz …\nGenerate MLIR operations for the ec_state_init libfunc.\nGenerate MLIR operations for the ec_point_try_new_nz …\nGenerate MLIR operations for the ec_point_unwrap libfunc.\nGenerate MLIR operations for the ec_point_zero libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the enum_from_bounded_int …\nGenerate MLIR operations for the enum_init libfunc.\nGenerate MLIR operations for the enum_match libfunc.\nGenerate MLIR operations for the enum_snapshot_match …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the following libfuncs:\nGenerate MLIR operations for the felt252_const libfunc.\nGenerate MLIR operations for the felt252_is_zero libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the function_call libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the withdraw_gas_all libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the withdraw_gas libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the alloc_local libfunc.\nGenerate MLIR operations for the finalize_locals libfunc.\nGenerate MLIR operations for the rename libfunc.\nGenerate MLIR operations for the store_local libfunc.\nGenerate MLIR operations for the store_temp libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i128_const libfunc.\nGenerate MLIR operations for the i128_diff libfunc.\nGenerate MLIR operations for the i128_eq libfunc.\nGenerate MLIR operations for the i128_from_felt252 libfunc.\nGenerate MLIR operations for the i128_is_zero libfunc.\nGenerate MLIR operations for the i128 operation libfunc.\nGenerate MLIR operations for the i128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i16_const libfunc.\nGenerate MLIR operations for the i16_diff libfunc.\nGenerate MLIR operations for the i16_eq libfunc.\nGenerate MLIR operations for the i16_from_felt252 libfunc.\nGenerate MLIR operations for the i16_is_zero libfunc.\nGenerate MLIR operations for the i16 operation libfunc.\nGenerate MLIR operations for the i16_to_felt252 libfunc.\nGenerate MLIR operations for the i16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i32_const libfunc.\nGenerate MLIR operations for the i32_diff libfunc.\nGenerate MLIR operations for the i32_eq libfunc.\nGenerate MLIR operations for the i32_from_felt252 libfunc.\nGenerate MLIR operations for the i32_is_zero libfunc.\nGenerate MLIR operations for the i32 operation libfunc.\nGenerate MLIR operations for the i32_to_felt252 libfunc.\nGenerate MLIR operations for the i32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i64_const libfunc.\nGenerate MLIR operations for the i64_diff libfunc.\nGenerate MLIR operations for the i64_eq libfunc.\nGenerate MLIR operations for the i64_from_felt252 libfunc.\nGenerate MLIR operations for the i64_is_zero libfunc.\nGenerate MLIR operations for the i64 operation libfunc.\nGenerate MLIR operations for the i64_to_felt252 libfunc.\nGenerate MLIR operations for the i64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i8_const libfunc.\nGenerate MLIR operations for the i8_diff libfunc.\nGenerate MLIR operations for the i8_eq libfunc.\nGenerate MLIR operations for the i8_from_felt252 libfunc.\nGenerate MLIR operations for the i8_is_zero libfunc.\nGenerate MLIR operations for the i8 operation libfunc.\nGenerate MLIR operations for the i8_to_felt252 libfunc.\nGenerate MLIR operations for the i8_widemul libfunc.\nGenerate MLIR operations for the snapshot_take libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the struct_construct libfunc.\nGenerate MLIR operations for the struct_deconstruct …\nGenerate MLIR operations for the struct_construct libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u128_byte_reverse libfunc.\nGenerate MLIR operations for the u128_const libfunc.\nGenerate MLIR operations for the u128_safe_divmod libfunc.\nGenerate MLIR operations for the u128_equal libfunc.\nGenerate MLIR operations for the u128s_from_felt252 …\nGenerate MLIR operations for the u128_guarantee_mul …\nGenerate MLIR operations for the u128_guarantee_verify …\nGenerate MLIR operations for the u128_is_zero libfunc.\nGenerate MLIR operations for the u128_add and u128_sub …\nGenerate MLIR operations for the u128_sqrt libfunc.\nGenerate MLIR operations for the u128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u16_const libfunc.\nGenerate MLIR operations for the u16_safe_divmod libfunc.\nGenerate MLIR operations for the u16_eq libfunc.\nGenerate MLIR operations for the u16_from_felt252 libfunc.\nGenerate MLIR operations for the u16_is_zero libfunc.\nGenerate MLIR operations for the u16 operation libfunc.\nGenerate MLIR operations for the u16_sqrt libfunc.\nGenerate MLIR operations for the u16_to_felt252 libfunc.\nGenerate MLIR operations for the u16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u256_safe_divmod libfunc.\nGenerate MLIR operations for the u256_is_zero libfunc.\nGenerate MLIR operations for the u256_sqrt libfunc.\nGenerate MLIR operations for the u256_guarantee_inv_mod_n …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u32_const libfunc.\nGenerate MLIR operations for the u32_safe_divmod libfunc.\nGenerate MLIR operations for the u32_eq libfunc.\nGenerate MLIR operations for the u32_from_felt252 libfunc.\nGenerate MLIR operations for the u32_is_zero libfunc.\nGenerate MLIR operations for the u32 operation libfunc.\nGenerate MLIR operations for the u32_sqrt libfunc.\nGenerate MLIR operations for the u32_to_felt252 libfunc.\nGenerate MLIR operations for the u32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u512_safe_divmod_by_u256 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u64_const libfunc.\nGenerate MLIR operations for the u64_safe_divmod libfunc.\nGenerate MLIR operations for the u64_eq libfunc.\nGenerate MLIR operations for the u64_from_felt252 libfunc.\nGenerate MLIR operations for the u64_is_zero libfunc.\nGenerate MLIR operations for the u64 operation libfunc.\nGenerate MLIR operations for the u64_sqrt libfunc.\nGenerate MLIR operations for the u64_to_felt252 libfunc.\nGenerate MLIR operations for the u64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u8_const libfunc.\nGenerate MLIR operations for the u8_safe_divmod libfunc.\nGenerate MLIR operations for the u8_eq libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the u8_is_zero libfunc.\nGenerate MLIR operations for the u8 operation libfunc.\nGenerate MLIR operations for the u8_sqrt libfunc.\nGenerate MLIR operations for the u8_to_felt252 libfunc.\nGenerate MLIR operations for the u8_widemul libfunc.\nGenerate MLIR operations for the jump libfunc.\nGenerate MLIR operations for the unwrap_non_zero libfunc.\nMetadata container.\nDebug utilities\nReturns the argument unchanged.\nRetrieve a reference to some metadata.\nRetrieve a mutable reference to some metadata.\nInsert some metadata and return a mutable reference.\nCalls U::from(self).\nCreate an empty metadata container.\nFinite field prime modulo\nMemory allocation external bindings\nRemove some metadata and return its last value.\nRuntime library bindings\nTail recursion information\nPrints the given &str.\nDump a memory region at runtime.\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nHolds global gas info.\nError for metadata calculations.\nConfiguration for metadata computation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the initial value for the gas counter. If …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nPrime modulo number metadata.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the metadata from the prime number.\nReturn the stored prime number.\nMemory allocation realloc metadata.\nCalls the free function.\nReturns the argument unchanged.\nCalls U::from(self).\nRegister the bindings to the realloc C function and return …\nCalls the realloc function, returns a op with 1 result: an …\nRuntime library bindings metadata.\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_gas_refund() …\nRegister if necessary, then invoke the dict_get() function.\nRegister if necessary, then invoke the dict_insert() …\nReturns the argument unchanged.\nCalls U::from(self).\nRegister if necessary, then invoke the debug::print() …\nRegister if necessary, then invoke the ec_point_from_x_nz()…\nRegister if necessary, then invoke the …\nRegister if necessary, then invoke the ec_state_add() …\nRegister if necessary, then invoke the ec_state_add_mul() …\nRegister if necessary, then invoke the poseidon() function.\nRegister if necessary, then invoke the pedersen() function.\nRegister if necessary, then invoke the vtable_cheatcode() …\nReturns the argument unchanged.\nCalls U::from(self).\nThe tail recursion metadata.\nReturn the current depth counter value.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the tail recursion meta.\nReturn the recursion target block.\nReturn the return target block, if set.\nSet the return target block.\nA MLIR module in the context of Cairo Native. It is …\nReturns the argument unchanged.\nRetrieve a reference to some stored metadata.\nInsert some metadata for the program execution and return …\nCalls U::from(self).\nRemoves metadata\nContains the error value\nBinary representation of a Felt (in MLIR).\nContains the success value\nBinary representation of a u256 (in MLIR).\nRuntime function that calls the cheatcode syscall\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nEvent emitted by the emit_event syscall.\nA (somewhat) usable implementation of the starknet syscall …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nError type returned by this trait’s methods.\nGeneration of MLIR types from their Sierra counterparts.\nArray type\nBitwise type\nBoundedInt type\nBox type\nBuild the MLIR type.\nBuiltin costs type\nbytes31 type\nCoupon type.\nElliptic curve operation type\nElliptic curve point type\nElliptic curve state type\nEnum type\nfelt252 type\nFelt dictionary type\nFelt dictionary entry type\nReturns the argument unchanged.\nGas builtin type\nIf the type is an integer type, return its width in bits.\nCalls U::from(self).\nReturn whether the type is a builtin.\nReturn whether the type requires a return pointer when …\nIf the type is an integer type, return if its signed.\nWhether the layout should be allocated in memory (either …\nReturn whether the Sierra type resolves to a zero-sized …\nGenerate the layout of the MLIR type.\nNon-zero type\nNullable type\nPedersen type\nPoseidon type\nBuiltin costs type\nSegment arena type\nSnapshot type\nSquashed Felt dictionary type\nStarknet types\nStruct type\nUnsigned 128-bit integer type\nUnsigned 128-bit multiplication guarantee type\nUnsigned 16-bit integer type\nUnsigned 32-bit integer type\nUnsigned 64-bit integer type\nUnsigned 8-bit integer type\nUninitialized type\nIf the type is a enum type, return all possible variants.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nAn MLIR type with its memory layout.\nBuild the MLIR type.\nExtract layout for the default enum representation, its …\nExtract the type and layout for the default enum …\nThe felt252 prime modulo.\nBuild the MLIR type.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nCompile a cairo program found at the given path to sierra.\nCreates the execution engine, with all symbols registered.\nReturn a type that calls a closure when formatted using …\nParse any type that can be a bigint to a felt that can be …\nParse a short string into a felt that can be used in the …\nParse a numeric string into felt, wrapping negatives …\nReturns the given entry point if present.\nReturns the given entry point if present.\nGiven a string representing a function name, searches in …\nReturns the argument unchanged.\nGenerate a function name.\nReturn the layout for an integer of arbitrary width.\nCalls U::from(self).\nCopied from std.\nEdit: Copied from the std lib.\nall elements need to be same type\nA JitValue is a value that can be passed to the JIT engine …\nUsed as return value for Nullables that are null.\nString to felt\nReturns the argument unchanged.\nCalls U::from(self).")
\ No newline at end of file
diff --git a/search.desc/cairo_native_run/cairo_native_run-desc-0-.js b/search.desc/cairo_native_run/cairo_native_run-desc-0-.js
index 135e227c4..cf560c256 100644
--- a/search.desc/cairo_native_run/cairo_native_run-desc-0-.js
+++ b/search.desc/cairo_native_run/cairo_native_run-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("cairo_native_run", 0, "Command line args parser. Exits with 1 if the compilation …\nAllows the compilation to succeed with warnings.\nIn cases where gas is available, the amount of provided …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nOptimization level, Valid: 0, 1, 2, 3. Values higher than …\nThe Cairo project path to compile and run its tests.\nRun with JIT or AOT (compiled).\nWhether path is a single file.\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
+searchState.loadedDescShard("cairo_native_run", 0, "Command line args parser. Exits with 1 if the compilation …\nAllows the compilation to succeed with warnings.\nIn cases where gas is available, the amount of provided …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nOptimization level, Valid: 0, 1, 2, 3. Values higher than …\nThe Cairo project path to compile and run its tests.\nRun with JIT or AOT (compiled).\nWhether path is a single file.\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
diff --git a/search.desc/cairo_native_test/cairo_native_test-desc-0-.js b/search.desc/cairo_native_test/cairo_native_test-desc-0-.js
index 14c3a0295..33f15b9df 100644
--- a/search.desc/cairo_native_test/cairo_native_test-desc-0-.js
+++ b/search.desc/cairo_native_test/cairo_native_test-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("cairo_native_test", 0, "Compiles a Cairo project and runs all the functions marked …\nAllows the compilation to succeed with warnings.\nThe filter for the tests, running only tests containing …\nReturns the argument unchanged.\nShould we run only the ignored tests.\nShould we run ignored tests as well.\nCalls U::from(self).\nOptimization level, Valid: 0, 1, 2, 3. Values higher than …\nThe Cairo project path to compile and run its tests.\nRun with JIT or AOT (compiled).\nWhether path is a single file.\nShould we add the starknet plugin to run the tests.\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
+searchState.loadedDescShard("cairo_native_test", 0, "Compiles a Cairo project and runs all the functions marked …\nAllows the compilation to succeed with warnings.\nThe filter for the tests, running only tests containing …\nReturns the argument unchanged.\nShould we run only the ignored tests.\nShould we run ignored tests as well.\nCalls U::from(self).\nOptimization level, Valid: 0, 1, 2, 3. Values higher than …\nThe Cairo project path to compile and run its tests.\nRun with JIT or AOT (compiled).\nWhether path is a single file.\nShould we add the starknet plugin to run the tests.\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
diff --git a/search.desc/scarb_native_dump/scarb_native_dump-desc-0-.js b/search.desc/scarb_native_dump/scarb_native_dump-desc-0-.js
index f70f9399b..47db46115 100644
--- a/search.desc/scarb_native_dump/scarb_native_dump-desc-0-.js
+++ b/search.desc/scarb_native_dump/scarb_native_dump-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("scarb_native_dump", 0, "Compiles all packages from a Scarb project on the current …\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
+searchState.loadedDescShard("scarb_native_dump", 0, "Compiles all packages from a Scarb project on the current …\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
diff --git a/search.desc/scarb_native_test/scarb_native_test-desc-0-.js b/search.desc/scarb_native_test/scarb_native_test-desc-0-.js
index 04f29f29a..72f395deb 100644
--- a/search.desc/scarb_native_test/scarb_native_test-desc-0-.js
+++ b/search.desc/scarb_native_test/scarb_native_test-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("scarb_native_test", 0, "Compiles all packages from a Scarb project matching …\nRun only tests whose name contain FILTER.\nReturns the argument unchanged.\nRun only ignored tests.\nRun ignored and not ignored tests.\nCalls U::from(self).\nOptimization level, Valid: 0, 1, 2, 3. Values higher than …\nRun with JIT or AOT (compiled).\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
+searchState.loadedDescShard("scarb_native_test", 0, "Compiles all packages from a Scarb project matching …\nRun only tests whose name contain FILTER.\nReturns the argument unchanged.\nRun only ignored tests.\nRun ignored and not ignored tests.\nCalls U::from(self).\nOptimization level, Valid: 0, 1, 2, 3. Values higher than …\nRun with JIT or AOT (compiled).\nFind the function ending with name_suffix in the program.\nFormats the given felts as a panic string.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nConvert a JIT value to a felt.\nConvert the execution result to a run result.\nThe result of a ran test.\nThe status of a ran test.\nSummary data of the ran tests.\nDisplay the summary of the ran tests.\nFilter compiled test cases with user provided arguments.\nFind all testable targets in the Scarb package.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe gas usage of the run if relevant.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRuns the tests and process the results for a summary.\nThe status of the run.")
\ No newline at end of file
diff --git a/src-files.js b/src-files.js
index a8d97a37d..a3677e071 100644
--- a/src-files.js
+++ b/src-files.js
@@ -1,5 +1,5 @@
 var srcIndex = new Map(JSON.parse('[\
-["cairo_native",["",[["cache",[],["aot.rs","jit.rs"]],["debug_info",[],["funcs.rs","libfunc_declarations.rs","statements.rs","type_declarations.rs"]],["executor",[],["aot.rs","jit.rs"]],["libfuncs",[["starknet",[],["secp256.rs","testing.rs"]]],["ap_tracking.rs","array.rs","bitwise.rs","bool.rs","box.rs","branch_align.rs","bytes31.rs","cast.rs","const.rs","coupon.rs","debug.rs","drop.rs","dup.rs","ec.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","function_call.rs","gas.rs","mem.rs","nullable.rs","pedersen.rs","poseidon.rs","sint128.rs","sint16.rs","sint32.rs","sint64.rs","sint8.rs","snapshot_take.rs","starknet.rs","struct.rs","uint128.rs","uint16.rs","uint256.rs","uint32.rs","uint512.rs","uint64.rs","uint8.rs","unconditional_jump.rs","unwrap_non_zero.rs"]],["metadata",[],["debug_utils.rs","enum_snapshot_variants.rs","gas.rs","prime_modulo.rs","realloc_bindings.rs","runtime_bindings.rs","snapshot_clones.rs","tail_recursion.rs"]],["types",[],["array.rs","bitwise.rs","bounded_int.rs","box.rs","builtin_costs.rs","bytes31.rs","coupon.rs","ec_op.rs","ec_point.rs","ec_state.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","gas_builtin.rs","non_zero.rs","nullable.rs","pedersen.rs","poseidon.rs","range_check.rs","segment_arena.rs","snapshot.rs","squashed_felt252_dict.rs","starknet.rs","struct.rs","uint128.rs","uint128_mul_guarantee.rs","uint16.rs","uint32.rs","uint64.rs","uint8.rs","uninitialized.rs"]]],["block_ext.rs","cache.rs","compiler.rs","context.rs","debug_info.rs","error.rs","execution_result.rs","executor.rs","ffi.rs","lib.rs","libfuncs.rs","metadata.rs","module.rs","starknet.rs","types.rs","utils.rs","values.rs"]]],\
+["cairo_native",["",[["cache",[],["aot.rs","jit.rs"]],["debug_info",[],["funcs.rs","libfunc_declarations.rs","statements.rs","type_declarations.rs"]],["executor",[],["aot.rs","jit.rs"]],["libfuncs",[["starknet",[],["secp256.rs","testing.rs"]]],["ap_tracking.rs","array.rs","bitwise.rs","bool.rs","box.rs","branch_align.rs","bytes31.rs","cast.rs","const.rs","coupon.rs","debug.rs","drop.rs","dup.rs","ec.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","function_call.rs","gas.rs","mem.rs","nullable.rs","pedersen.rs","poseidon.rs","sint128.rs","sint16.rs","sint32.rs","sint64.rs","sint8.rs","snapshot_take.rs","starknet.rs","struct.rs","uint128.rs","uint16.rs","uint256.rs","uint32.rs","uint512.rs","uint64.rs","uint8.rs","unconditional_jump.rs","unwrap_non_zero.rs"]],["metadata",[],["debug_utils.rs","enum_snapshot_variants.rs","gas.rs","prime_modulo.rs","realloc_bindings.rs","runtime_bindings.rs","snapshot_clones.rs","tail_recursion.rs"]],["types",[],["array.rs","bitwise.rs","bounded_int.rs","box.rs","builtin_costs.rs","bytes31.rs","coupon.rs","ec_op.rs","ec_point.rs","ec_state.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","gas_builtin.rs","non_zero.rs","nullable.rs","pedersen.rs","poseidon.rs","range_check.rs","segment_arena.rs","snapshot.rs","squashed_felt252_dict.rs","starknet.rs","struct.rs","uint128.rs","uint128_mul_guarantee.rs","uint16.rs","uint32.rs","uint64.rs","uint8.rs","uninitialized.rs"]]],["block_ext.rs","cache.rs","compiler.rs","context.rs","debug_info.rs","error.rs","execution_result.rs","executor.rs","ffi.rs","lib.rs","libfuncs.rs","metadata.rs","module.rs","starknet.rs","starknet_stub.rs","types.rs","utils.rs","values.rs"]]],\
 ["cairo_native_compile",["",[],["cairo-native-compile.rs"]]],\
 ["cairo_native_dump",["",[],["cairo-native-dump.rs"]]],\
 ["cairo_native_run",["",[["utils",[],["mod.rs","test.rs"]]],["cairo-native-run.rs"]]],\
diff --git a/src/cairo_native/executor/aot.rs.html b/src/cairo_native/executor/aot.rs.html
index 82a631448..4f67fcdec 100644
--- a/src/cairo_native/executor/aot.rs.html
+++ b/src/cairo_native/executor/aot.rs.html
@@ -284,6 +284,8 @@
 284
 285
 286
+287
+288
 
use crate::{
     error::Error,
     execution_result::{ContractExecutionResult, ExecutionResult},
@@ -445,7 +447,8 @@
     use super::*;
     use crate::{
         context::NativeContext,
-        utils::test::{load_cairo, load_starknet, TestSyscallHandler},
+        starknet_stub::StubSyscallHandler,
+        utils::test::{load_cairo, load_starknet},
     };
     use cairo_lang_sierra::program::Program;
     use rstest::*;
@@ -519,22 +522,23 @@
         // The second function in the program is `get_block_hash`.
         let entrypoint_function_id = &program.funcs.get(1).expect("should have a function").id;
 
-        let mut syscall_handler = TestSyscallHandler;
+        let mut syscall_handler = &mut StubSyscallHandler::default();
+
+        let expected_value = syscall_handler.get_block_hash(1, &mut 0).unwrap();
+
         let result = executor
             .invoke_dynamic_with_syscall_handler(
                 entrypoint_function_id,
                 &[],
                 Some(u128::MAX),
-                syscall_handler.clone(),
+                syscall_handler,
             )
             .unwrap();
 
         let expected_value = JitValue::Enum {
             tag: 0,
             value: JitValue::Struct {
-                fields: vec![JitValue::Felt252(
-                    syscall_handler.get_block_hash(1, &mut 0).unwrap(),
-                )],
+                fields: vec![JitValue::Felt252(expected_value)],
                 debug_name: Some("Tuple<felt252>".into()),
             }
             .into(),
@@ -563,7 +567,7 @@
                 entrypoint_function_id,
                 &[],
                 Some(u128::MAX),
-                TestSyscallHandler,
+                &mut StubSyscallHandler::default(),
             )
             .unwrap();
 
diff --git a/src/cairo_native/lib.rs.html b/src/cairo_native/lib.rs.html
index d701fb603..1c049ef36 100644
--- a/src/cairo_native/lib.rs.html
+++ b/src/cairo_native/lib.rs.html
@@ -114,6 +114,7 @@
 114
 115
 116
+117
 
//! # Cairo Sierra to MLIR compiler and JIT engine
 //!
 //! This crate is a compiler and JIT engine that transforms Sierra (or Cairo) sources into MLIR,
@@ -227,6 +228,7 @@
 pub mod metadata;
 pub mod module;
 pub mod starknet;
+pub mod starknet_stub;
 pub mod types;
 pub mod utils;
 pub mod values;
diff --git a/src/cairo_native/starknet_stub.rs.html b/src/cairo_native/starknet_stub.rs.html
new file mode 100644
index 000000000..ab217abc3
--- /dev/null
+++ b/src/cairo_native/starknet_stub.rs.html
@@ -0,0 +1,2445 @@
+starknet_stub.rs - source
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+
//! A (somewhat) usable implementation of the starknet syscall handler trait.
+
+use std::{
+    collections::{HashMap, VecDeque},
+    iter::once,
+};
+
+use crate::starknet::{
+    BlockInfo, ExecutionInfo, ExecutionInfoV2, Secp256k1Point, Secp256r1Point,
+    StarknetSyscallHandler, SyscallResult, TxInfo, TxV2Info, U256,
+};
+use k256::elliptic_curve::{
+    generic_array::GenericArray,
+    sec1::{FromEncodedPoint, ToEncodedPoint},
+};
+use sec1::point::Coordinates;
+use starknet_types_core::felt::Felt;
+use tracing::instrument;
+
+/// A (somewhat) usable implementation of the starknet syscall handler trait.
+///
+/// Currently gas is not deducted.
+#[derive(Debug, Clone)]
+pub struct StubSyscallHandler {
+    pub storage: HashMap<(u32, Felt), Felt>,
+    pub events: Vec<StubEvent>,
+    pub execution_info: ExecutionInfoV2,
+    pub logs: HashMap<Felt, ContractLogs>,
+}
+
+impl Default for StubSyscallHandler {
+    fn default() -> Self {
+        Self {
+            storage: HashMap::new(),
+            events: Vec::new(),
+            execution_info: ExecutionInfoV2 {
+                block_info: BlockInfo {
+                    block_number: 0,
+                    block_timestamp: 0,
+                    sequencer_address: 666.into(),
+                },
+                tx_info: TxV2Info {
+                    version: 1.into(),
+                    account_contract_address: 1.into(),
+                    max_fee: 0,
+                    signature: vec![1.into()],
+                    transaction_hash: 1.into(),
+                    chain_id: 1.into(),
+                    nonce: 0.into(),
+                    resource_bounds: vec![],
+                    tip: 0,
+                    paymaster_data: vec![],
+                    nonce_data_availability_mode: 0,
+                    fee_data_availability_mode: 0,
+                    account_deployment_data: vec![],
+                },
+                caller_address: 2.into(),
+                contract_address: 3.into(),
+                entry_point_selector: 4.into(),
+            },
+            logs: HashMap::new(),
+        }
+    }
+}
+
+/// Event emitted by the emit_event syscall.
+#[derive(Debug, Clone)]
+pub struct StubEvent {
+    pub keys: Vec<Felt>,
+    pub data: Vec<Felt>,
+}
+
+#[derive(Debug, Default, Clone)]
+pub struct ContractLogs {
+    pub events: VecDeque<StubEvent>,
+    pub l2_to_l1_messages: VecDeque<L2ToL1Message>,
+}
+
+type L2ToL1Message = (Felt, Vec<Felt>);
+
+impl StarknetSyscallHandler for &mut StubSyscallHandler {
+    #[instrument(skip(self))]
+    fn get_block_hash(
+        &mut self,
+        block_number: u64,
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<Felt> {
+        tracing::debug!("called");
+        Ok(block_number.into())
+    }
+
+    #[instrument(skip(self))]
+    fn get_execution_info(
+        &mut self,
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<crate::starknet::ExecutionInfo> {
+        tracing::debug!("called");
+        Ok(ExecutionInfo {
+            block_info: self.execution_info.block_info,
+            tx_info: TxInfo {
+                version: self.execution_info.tx_info.version,
+                account_contract_address: self.execution_info.tx_info.account_contract_address,
+                max_fee: self.execution_info.tx_info.max_fee,
+                signature: self.execution_info.tx_info.signature.clone(),
+                transaction_hash: self.execution_info.tx_info.transaction_hash,
+                chain_id: self.execution_info.tx_info.chain_id,
+                nonce: self.execution_info.tx_info.nonce,
+            },
+            caller_address: self.execution_info.caller_address,
+            contract_address: self.execution_info.contract_address,
+            entry_point_selector: self.execution_info.entry_point_selector,
+        })
+    }
+
+    #[instrument(skip(self))]
+    fn get_execution_info_v2(
+        &mut self,
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<crate::starknet::ExecutionInfoV2> {
+        tracing::debug!("called");
+        Ok(self.execution_info.clone())
+    }
+
+    #[instrument(skip(self))]
+    fn deploy(
+        &mut self,
+        class_hash: Felt,
+        contract_address_salt: Felt,
+        calldata: &[Felt],
+        deploy_from_zero: bool,
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<(Felt, Vec<Felt>)> {
+        tracing::debug!("called");
+        todo!()
+    }
+
+    #[instrument(skip(self))]
+    fn replace_class(
+        &mut self,
+        class_hash: Felt,
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<()> {
+        tracing::debug!("called");
+        tracing::warn!("unimplemented");
+        Ok(())
+    }
+
+    #[instrument(skip(self))]
+    fn library_call(
+        &mut self,
+        class_hash: Felt,
+        function_selector: Felt,
+        calldata: &[Felt],
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<Vec<Felt>> {
+        tracing::debug!("called");
+        tracing::warn!("unimplemented");
+        Ok(vec![])
+    }
+
+    #[instrument(skip(self))]
+    fn call_contract(
+        &mut self,
+        address: Felt,
+        entry_point_selector: Felt,
+        calldata: &[Felt],
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<Vec<Felt>> {
+        tracing::debug!("called");
+        tracing::warn!("unimplemented");
+        Ok(vec![])
+    }
+
+    fn storage_read(
+        &mut self,
+        address_domain: u32,
+        address: Felt,
+        _remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<Felt> {
+        tracing::debug!("called");
+        if let Some(value) = self.storage.get(&(address_domain, address)) {
+            Ok(*value)
+        } else {
+            Err(vec![Felt::from_bytes_be_slice(b"address not found")])
+        }
+    }
+
+    #[instrument(skip(self))]
+    fn storage_write(
+        &mut self,
+        address_domain: u32,
+        address: Felt,
+        value: Felt,
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<()> {
+        tracing::debug!("called");
+        self.storage.insert((address_domain, address), value);
+        Ok(())
+    }
+
+    #[instrument(skip(self))]
+    fn emit_event(
+        &mut self,
+        keys: &[Felt],
+        data: &[Felt],
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<()> {
+        tracing::debug!("called");
+        tracing::warn!("unimplemented but stored");
+        self.events.push(StubEvent {
+            keys: keys.to_vec(),
+            data: data.to_vec(),
+        });
+        Ok(())
+    }
+
+    #[instrument(skip(self))]
+    fn send_message_to_l1(
+        &mut self,
+        to_address: Felt,
+        payload: &[Felt],
+        remaining_gas: &mut u128,
+    ) -> crate::starknet::SyscallResult<()> {
+        tracing::debug!("called");
+        tracing::warn!("unimplemented");
+        Ok(())
+    }
+
+    #[instrument(skip(self))]
+    fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256> {
+        tracing::debug!("called");
+        let length = input.len();
+
+        if length % 17 != 0 {
+            let error_msg = b"Invalid keccak input size";
+            let felt_error = Felt::from_bytes_be_slice(error_msg);
+            return Err(vec![felt_error]);
+        }
+
+        let n_chunks = length / 17;
+        let mut state = [0u64; 25];
+
+        for i in 0..n_chunks {
+            if *gas < KECCAK_ROUND_COST {
+                let error_msg = b"Syscall out of gas";
+                let felt_error = Felt::from_bytes_be_slice(error_msg);
+                return Err(vec![felt_error]);
+            }
+            const KECCAK_ROUND_COST: u128 = 180000;
+            *gas -= KECCAK_ROUND_COST;
+            let chunk = &input[i * 17..(i + 1) * 17]; //(request.input_start + i * 17)?;
+            for (i, val) in chunk.iter().enumerate() {
+                state[i] ^= val;
+            }
+            keccak::f1600(&mut state)
+        }
+
+        // state[0] and state[1] conform the hash_high (u128)
+        // state[2] and state[3] conform the hash_low (u128)
+        SyscallResult::Ok(U256 {
+            lo: state[2] as u128 | ((state[3] as u128) << 64),
+            hi: state[0] as u128 | ((state[1] as u128) << 64),
+        })
+    }
+
+    #[instrument(skip(self))]
+    fn secp256k1_new(
+        &mut self,
+        x: U256,
+        y: U256,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Option<Secp256k1Point>> {
+        tracing::debug!("called");
+        // The following unwraps should be unreachable because the iterator we provide has the
+        // expected number of bytes.
+        let point = k256::ProjectivePoint::from_encoded_point(
+            &k256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        );
+
+        if bool::from(point.is_some()) {
+            Ok(Some(Secp256k1Point { x, y }))
+        } else {
+            Ok(None)
+        }
+    }
+
+    #[instrument(skip(self))]
+    fn secp256k1_add(
+        &mut self,
+        p0: Secp256k1Point,
+        p1: Secp256k1Point,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Secp256k1Point> {
+        tracing::debug!("called");
+        // The inner unwraps should be unreachable because the iterator we provide has the expected
+        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
+        // they'll be provided by secp256 syscalls.
+        let p0 = k256::ProjectivePoint::from_encoded_point(
+            &k256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    p0.x.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p0.x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    p0.y.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p0.y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        )
+        .unwrap();
+        let p1 = k256::ProjectivePoint::from_encoded_point(
+            &k256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    p1.x.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p1.x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    p1.y.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p1.y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        )
+        .unwrap();
+
+        let p = p0 + p1;
+
+        let p = p.to_encoded_point(false);
+        let (x, y) = match p.coordinates() {
+            Coordinates::Uncompressed { x, y } => (x, y),
+            _ => {
+                // This should be unreachable because we explicitly asked for the uncompressed
+                // encoding.
+                unreachable!()
+            }
+        };
+
+        // The following two unwraps should be safe because the array always has 32 bytes. The other
+        // four are definitely safe because the slicing guarantees its length to be the right one.
+        let x: [u8; 32] = x.as_slice().try_into().unwrap();
+        let y: [u8; 32] = y.as_slice().try_into().unwrap();
+        Ok(Secp256k1Point {
+            x: U256 {
+                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
+            },
+            y: U256 {
+                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
+            },
+        })
+    }
+
+    #[instrument(skip(self))]
+    fn secp256k1_mul(
+        &mut self,
+        p: Secp256k1Point,
+        m: U256,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Secp256k1Point> {
+        tracing::debug!("called");
+        // The inner unwrap should be unreachable because the iterator we provide has the expected
+        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
+        // they'll be provided by secp256 syscalls.
+        let p = k256::ProjectivePoint::from_encoded_point(
+            &k256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        )
+        .unwrap();
+        let m: k256::Scalar = k256::elliptic_curve::ScalarPrimitive::from_slice(&{
+            let mut buf = [0u8; 32];
+            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
+            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
+            buf
+        })
+        .map_err(|_| {
+            vec![Felt::from_bytes_be(
+                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
+            )]
+        })?
+        .into();
+
+        let p = p * m;
+
+        let p = p.to_encoded_point(false);
+        let (x, y) = match p.coordinates() {
+            Coordinates::Uncompressed { x, y } => (x, y),
+            _ => {
+                // This should be unreachable because we explicitly asked for the uncompressed
+                // encoding.
+                unreachable!()
+            }
+        };
+
+        // The following two unwraps should be safe because the array always has 32 bytes. The other
+        // four are definitely safe because the slicing guarantees its length to be the right one.
+        let x: [u8; 32] = x.as_slice().try_into().unwrap();
+        let y: [u8; 32] = y.as_slice().try_into().unwrap();
+        Ok(Secp256k1Point {
+            x: U256 {
+                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
+            },
+            y: U256 {
+                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
+            },
+        })
+    }
+
+    #[instrument(skip(self))]
+    fn secp256k1_get_point_from_x(
+        &mut self,
+        x: U256,
+        y_parity: bool,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Option<Secp256k1Point>> {
+        tracing::debug!("called");
+        // The inner unwrap should be unreachable because the iterator we provide has the expected
+        // number of bytes. The outer unwrap depends on the encoding format, which should be valid
+        // since it's hardcoded..
+        let point = k256::ProjectivePoint::from_encoded_point(
+            &k256::EncodedPoint::from_bytes(
+                k256::CompressedPoint::from_exact_iter(
+                    once(0x02 | y_parity as u8)
+                        .chain(x.lo.to_be_bytes())
+                        .chain(x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+            )
+            .unwrap(),
+        );
+
+        if bool::from(point.is_some()) {
+            // This unwrap has already been checked in the `if` expression's condition.
+            let p = point.unwrap();
+
+            let p = p.to_encoded_point(false);
+            let y = match p.coordinates() {
+                Coordinates::Uncompressed { y, .. } => y,
+                _ => {
+                    // This should be unreachable because we explicitly asked for the uncompressed
+                    // encoding.
+                    unreachable!()
+                }
+            };
+
+            // The following unwrap should be safe because the array always has 32 bytes. The other
+            // two are definitely safe because the slicing guarantees its length to be the right
+            // one.
+            let y: [u8; 32] = y.as_slice().try_into().unwrap();
+            Ok(Some(Secp256k1Point {
+                x,
+                y: U256 {
+                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
+                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
+                },
+            }))
+        } else {
+            Ok(None)
+        }
+    }
+
+    #[instrument(skip(self))]
+    fn secp256k1_get_xy(
+        &mut self,
+        p: Secp256k1Point,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<(U256, U256)> {
+        tracing::debug!("called");
+        Ok((p.x, p.y))
+    }
+
+    #[instrument(skip(self))]
+    fn secp256r1_new(
+        &mut self,
+        x: U256,
+        y: U256,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Option<Secp256r1Point>> {
+        tracing::debug!("called");
+        // The following unwraps should be unreachable because the iterator we provide has the
+        // expected number of bytes.
+        let point = p256::ProjectivePoint::from_encoded_point(
+            &k256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        );
+
+        if bool::from(point.is_some()) {
+            Ok(Some(Secp256r1Point { x, y }))
+        } else {
+            Ok(None)
+        }
+    }
+
+    #[instrument(skip(self))]
+    fn secp256r1_add(
+        &mut self,
+        p0: Secp256r1Point,
+        p1: Secp256r1Point,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Secp256r1Point> {
+        tracing::debug!("called");
+        // The inner unwraps should be unreachable because the iterator we provide has the expected
+        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
+        // they'll be provided by secp256 syscalls.
+        let p0 = p256::ProjectivePoint::from_encoded_point(
+            &p256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    p0.x.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p0.x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    p0.y.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p0.y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        )
+        .unwrap();
+        let p1 = p256::ProjectivePoint::from_encoded_point(
+            &p256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    p1.x.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p1.x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    p1.y.lo
+                        .to_be_bytes()
+                        .into_iter()
+                        .chain(p1.y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        )
+        .unwrap();
+
+        let p = p0 + p1;
+
+        let p = p.to_encoded_point(false);
+        let (x, y) = match p.coordinates() {
+            Coordinates::Uncompressed { x, y } => (x, y),
+            _ => {
+                // This should be unreachable because we explicitly asked for the uncompressed
+                // encoding.
+                unreachable!()
+            }
+        };
+
+        // The following two unwraps should be safe because the array always has 32 bytes. The other
+        // four are definitely safe because the slicing guarantees its length to be the right one.
+        let x: [u8; 32] = x.as_slice().try_into().unwrap();
+        let y: [u8; 32] = y.as_slice().try_into().unwrap();
+        Ok(Secp256r1Point {
+            x: U256 {
+                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
+            },
+            y: U256 {
+                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
+            },
+        })
+    }
+
+    #[instrument(skip(self))]
+    fn secp256r1_mul(
+        &mut self,
+        p: Secp256r1Point,
+        m: U256,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Secp256r1Point> {
+        tracing::debug!("called");
+        // The inner unwrap should be unreachable because the iterator we provide has the expected
+        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
+        // they'll be provided by secp256 syscalls.
+        let p = p256::ProjectivePoint::from_encoded_point(
+            &p256::EncodedPoint::from_affine_coordinates(
+                &GenericArray::from_exact_iter(
+                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                &GenericArray::from_exact_iter(
+                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
+                )
+                .unwrap(),
+                false,
+            ),
+        )
+        .unwrap();
+        let m: p256::Scalar = p256::elliptic_curve::ScalarPrimitive::from_slice(&{
+            let mut buf = [0u8; 32];
+            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
+            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
+            buf
+        })
+        .map_err(|_| {
+            vec![Felt::from_bytes_be(
+                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
+            )]
+        })?
+        .into();
+
+        let p = p * m;
+        let p = p.to_encoded_point(false);
+        let (x, y) = match p.coordinates() {
+            Coordinates::Uncompressed { x, y } => (x, y),
+            _ => {
+                // This should be unreachable because we explicitly asked for the uncompressed
+                // encoding.
+                unreachable!()
+            }
+        };
+
+        // The following two unwraps should be safe because the array always has 32 bytes. The other
+        // four are definitely safe because the slicing guarantees its length to be the right one.
+        let x: [u8; 32] = x.as_slice().try_into().unwrap();
+        let y: [u8; 32] = y.as_slice().try_into().unwrap();
+        Ok(Secp256r1Point {
+            x: U256 {
+                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
+            },
+            y: U256 {
+                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
+                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
+            },
+        })
+    }
+
+    #[instrument(skip(self))]
+    fn secp256r1_get_point_from_x(
+        &mut self,
+        x: U256,
+        y_parity: bool,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<Option<Secp256r1Point>> {
+        tracing::debug!("called");
+        let point = p256::ProjectivePoint::from_encoded_point(
+            &p256::EncodedPoint::from_bytes(
+                p256::CompressedPoint::from_exact_iter(
+                    once(0x02 | y_parity as u8)
+                        .chain(x.lo.to_be_bytes())
+                        .chain(x.hi.to_be_bytes()),
+                )
+                .unwrap(),
+            )
+            .unwrap(),
+        );
+
+        if bool::from(point.is_some()) {
+            let p = point.unwrap();
+
+            let p = p.to_encoded_point(false);
+            let y = match p.coordinates() {
+                Coordinates::Uncompressed { y, .. } => y,
+                _ => unreachable!(),
+            };
+
+            let y: [u8; 32] = y.as_slice().try_into().unwrap();
+            Ok(Some(Secp256r1Point {
+                x,
+                y: U256 {
+                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
+                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
+                },
+            }))
+        } else {
+            Ok(None)
+        }
+    }
+
+    #[instrument(skip(self))]
+    fn secp256r1_get_xy(
+        &mut self,
+        p: Secp256r1Point,
+        _remaining_gas: &mut u128,
+    ) -> SyscallResult<(U256, U256)> {
+        tracing::debug!("called");
+        Ok((p.x, p.y))
+    }
+
+    #[cfg(feature = "with-cheatcode")]
+    #[instrument(skip(self))]
+    fn cheatcode(&mut self, selector: Felt, input: &[Felt]) -> Vec<Felt> {
+        tracing::debug!("called");
+        let selector_bytes = selector.to_bytes_be();
+
+        let selector = match std::str::from_utf8(&selector_bytes) {
+            Ok(selector) => selector.trim_start_matches('\0'),
+            Err(_) => return Vec::new(),
+        };
+
+        match selector {
+            "set_sequencer_address" => {
+                self.execution_info.block_info.sequencer_address = input[0];
+                vec![]
+            }
+            "set_caller_address" => {
+                self.execution_info.caller_address = input[0];
+                vec![]
+            }
+            "set_contract_address" => {
+                self.execution_info.contract_address = input[0];
+                vec![]
+            }
+            "set_account_contract_address" => {
+                self.execution_info.tx_info.account_contract_address = input[0];
+                vec![]
+            }
+            "set_transaction_hash" => {
+                self.execution_info.tx_info.transaction_hash = input[0];
+                vec![]
+            }
+            "set_nonce" => {
+                self.execution_info.tx_info.nonce = input[0];
+                vec![]
+            }
+            "set_version" => {
+                self.execution_info.tx_info.version = input[0];
+                vec![]
+            }
+            "set_chain_id" => {
+                self.execution_info.tx_info.chain_id = input[0];
+                vec![]
+            }
+            "set_max_fee" => {
+                let max_fee = input[0].to_biguint().try_into().unwrap();
+                self.execution_info.tx_info.max_fee = max_fee;
+                vec![]
+            }
+            "set_block_number" => {
+                let block_number = input[0].to_biguint().try_into().unwrap();
+                self.execution_info.block_info.block_number = block_number;
+                vec![]
+            }
+            "set_block_timestamp" => {
+                let block_timestamp = input[0].to_biguint().try_into().unwrap();
+                self.execution_info.block_info.block_timestamp = block_timestamp;
+                vec![]
+            }
+            "set_signature" => {
+                self.execution_info.tx_info.signature = input.to_vec();
+                vec![]
+            }
+            "pop_log" => self
+                .logs
+                .get_mut(&input[0])
+                .and_then(|logs| logs.events.pop_front())
+                .map(|mut log| {
+                    let mut serialized_log = Vec::new();
+                    serialized_log.push(log.keys.len().into());
+                    serialized_log.append(&mut log.keys);
+                    serialized_log.push(log.data.len().into());
+                    serialized_log.append(&mut log.data);
+                    serialized_log
+                })
+                .unwrap_or_default(),
+            "pop_l2_to_l1_message" => self
+                .logs
+                .get_mut(&input[0])
+                .and_then(|logs| logs.l2_to_l1_messages.pop_front())
+                .map(|mut log| {
+                    let mut serialized_log = Vec::new();
+                    serialized_log.push(log.0);
+                    serialized_log.push(log.1.len().into());
+                    serialized_log.append(&mut log.1);
+                    serialized_log
+                })
+                .unwrap_or_default(),
+            _ => vec![],
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_secp256k1_get_xy() {
+        let p = Secp256k1Point {
+            x: U256 {
+                hi: 331229800296699308591929724809569456681,
+                lo: 240848751772479376198639683648735950585,
+            },
+            y: U256 {
+                hi: 75181762170223969696219813306313470806,
+                lo: 134255467439736302886468555755295925874,
+            },
+        };
+
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        assert_eq!(
+            test_syscall_handler.secp256k1_get_xy(p, &mut 10).unwrap(),
+            (
+                U256 {
+                    hi: 331229800296699308591929724809569456681,
+                    lo: 240848751772479376198639683648735950585,
+                },
+                U256 {
+                    hi: 75181762170223969696219813306313470806,
+                    lo: 134255467439736302886468555755295925874,
+                }
+            )
+        )
+    }
+
+    #[test]
+    fn test_secp256k1_secp256k1_new() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let x = U256 {
+            hi: 330631467365974629050427735731901850225,
+            lo: 97179038819393695679,
+        };
+        let y = U256 {
+            hi: 68974579539311638391577168388077592842,
+            lo: 26163136114030451075775058782541084873,
+        };
+
+        assert_eq!(
+            test_syscall_handler.secp256k1_new(x, y, &mut 10).unwrap(),
+            Some(Secp256k1Point { x, y })
+        );
+    }
+
+    #[test]
+    fn test_secp256k1_secp256k1_new_none() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let x = U256 {
+            hi: 330631467365974629050427735731901850225,
+            lo: 97179038819393695679,
+        };
+        let y = U256 { hi: 0, lo: 0 };
+
+        assert!(test_syscall_handler
+            .secp256k1_new(x, y, &mut 10)
+            .unwrap()
+            .is_none());
+    }
+
+    #[test]
+    fn test_secp256k1_ssecp256k1_add() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let p1 = Secp256k1Point {
+            x: U256 {
+                hi: 3468390537006497937951914270391801752,
+                lo: 161825202758953104525843685720298294023,
+            },
+            y: U256 {
+                hi: 336417762351022071123394393598455764152,
+                lo: 96009999919712310848645357523629574312,
+            },
+        };
+
+        let p2 = p1;
+
+        // 2 * P1
+        let p3 = test_syscall_handler.secp256k1_add(p1, p2, &mut 10).unwrap();
+
+        let p1_double = Secp256k1Point {
+            x: U256 {
+                hi: 122909745026270932982812610085084241637,
+                lo: 263210499965038831386353541518668627160,
+            },
+            y: U256 {
+                hi: 329597642124196932058042157271922763050,
+                lo: 35730324229579385338853513728577301230,
+            },
+        };
+        assert_eq!(p3, p1_double);
+        assert_eq!(
+            test_syscall_handler
+                .secp256k1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
+                .unwrap(),
+            p1_double
+        );
+
+        // 3 * P1
+        let three_p1 = Secp256k1Point {
+            x: U256 {
+                hi: 240848751772479376198639683648735950585,
+                lo: 331229800296699308591929724809569456681,
+            },
+            y: U256 {
+                hi: 134255467439736302886468555755295925874,
+                lo: 75181762170223969696219813306313470806,
+            },
+        };
+        assert_eq!(
+            test_syscall_handler.secp256k1_add(p1, p3, &mut 10).unwrap(),
+            three_p1
+        );
+        assert_eq!(
+            test_syscall_handler
+                .secp256k1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
+                .unwrap(),
+            three_p1
+        );
+    }
+
+    #[test]
+    fn test_secp256k1_get_point_from_x_false_yparity() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        assert_eq!(
+            test_syscall_handler
+                .secp256k1_get_point_from_x(
+                    U256 {
+                        hi: 330631467365974629050427735731901850225,
+                        lo: 97179038819393695679,
+                    },
+                    false,
+                    &mut 10
+                )
+                .unwrap()
+                .unwrap(),
+            Secp256k1Point {
+                x: U256 {
+                    hi: 330631467365974629050427735731901850225,
+                    lo: 97179038819393695679,
+                },
+                y: U256 {
+                    hi: 68974579539311638391577168388077592842,
+                    lo: 26163136114030451075775058782541084873,
+                },
+            }
+        );
+    }
+
+    #[test]
+    fn test_secp256k1_get_point_from_x_true_yparity() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        assert_eq!(
+            test_syscall_handler
+                .secp256k1_get_point_from_x(
+                    U256 {
+                        hi: 330631467365974629050427735731901850225,
+                        lo: 97179038819393695679,
+                    },
+                    true,
+                    &mut 10
+                )
+                .unwrap()
+                .unwrap(),
+            Secp256k1Point {
+                x: U256 {
+                    hi: 330631467365974629050427735731901850225,
+                    lo: 97179038819393695679,
+                },
+                y: U256 {
+                    hi: 271307787381626825071797439039395650341,
+                    lo: 314119230806908012387599548649227126582,
+                },
+            }
+        );
+    }
+
+    #[test]
+    fn test_secp256k1_get_point_from_x_none() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        assert!(test_syscall_handler
+            .secp256k1_get_point_from_x(U256 { hi: 0, lo: 0 }, true, &mut 10)
+            .unwrap()
+            .is_none());
+    }
+
+    #[test]
+    fn test_secp256r1_new() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let x = U256 {
+            hi: 330631467365974629050427735731901850225,
+            lo: 97179038819393695679,
+        };
+        let y = U256 {
+            hi: 111045440647474106186537215379882575585,
+            lo: 118910939004298029402109603132816090461,
+        };
+
+        assert_eq!(
+            test_syscall_handler
+                .secp256r1_new(x, y, &mut 10)
+                .unwrap()
+                .unwrap(),
+            Secp256r1Point { x, y }
+        );
+    }
+
+    #[test]
+    fn test_secp256r1_new_none() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let x = U256 { hi: 0, lo: 0 };
+        let y = U256 { hi: 0, lo: 0 };
+
+        assert!(test_syscall_handler
+            .secp256r1_new(x, y, &mut 10)
+            .unwrap()
+            .is_none());
+    }
+
+    #[test]
+    fn test_secp256r1_add() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let p1 = Secp256r1Point {
+            x: U256 {
+                hi: 330631467365974629050427735731901850225,
+                lo: 97179038819393695679,
+            },
+            y: U256 {
+                hi: 111045440647474106186537215379882575585,
+                lo: 118910939004298029402109603132816090461,
+            },
+        };
+
+        let p2 = p1;
+
+        // 2 * P1
+        let p3 = test_syscall_handler.secp256r1_add(p1, p2, &mut 10).unwrap();
+
+        let p1_double = Secp256r1Point {
+            x: U256 {
+                hi: 309339945874468445579793098896656960879,
+                lo: 280079427190737520201067412903899817878,
+            },
+            y: U256 {
+                hi: 231570843221643745062297421862629788481,
+                lo: 84249534056490759701994051847937833933,
+            },
+        };
+        assert_eq!(p3, p1_double);
+        assert_eq!(
+            test_syscall_handler
+                .secp256r1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
+                .unwrap(),
+            p1_double
+        );
+
+        // 3 * P1
+        let three_p1 = Secp256r1Point {
+            x: U256 {
+                hi: 195259625777021303662291420857740525307,
+                lo: 23850518908906170876551962912581992002,
+            },
+            y: U256 {
+                hi: 282344931843342117515389970197013120959,
+                lo: 178681203065513270100417145499857169664,
+            },
+        };
+        assert_eq!(
+            test_syscall_handler.secp256r1_add(p1, p3, &mut 10).unwrap(),
+            three_p1
+        );
+        assert_eq!(
+            test_syscall_handler
+                .secp256r1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
+                .unwrap(),
+            three_p1
+        );
+    }
+
+    #[test]
+    fn test_secp256r1_get_point_from_x_true_yparity() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let x = U256 {
+            hi: 330631467365974629050427735731901850225,
+            lo: 97179038819393695679,
+        };
+
+        let y = U256 {
+            hi: 111045440647474106186537215379882575585,
+            lo: 118910939004298029402109603132816090461,
+        };
+
+        assert_eq!(
+            test_syscall_handler
+                .secp256r1_get_point_from_x(x, true, &mut 10)
+                .unwrap()
+                .unwrap(),
+            Secp256r1Point { x, y }
+        );
+    }
+
+    #[test]
+    fn test_secp256r1_get_point_from_x_false_yparity() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let x = U256 {
+            hi: 330631467365974629050427735731901850225,
+            lo: 97179038819393695679,
+        };
+
+        let y = U256 {
+            hi: 229236926352692519791101729645429586206,
+            lo: 221371427837412271565447410779117722274,
+        };
+
+        assert_eq!(
+            test_syscall_handler
+                .secp256r1_get_point_from_x(x, false, &mut 10)
+                .unwrap()
+                .unwrap(),
+            Secp256r1Point { x, y }
+        );
+    }
+
+    #[test]
+    fn test_secp256r1_get_point_from_x_none() {
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        let x = U256 { hi: 0, lo: 10 };
+
+        assert!(test_syscall_handler
+            .secp256r1_get_point_from_x(x, true, &mut 10)
+            .unwrap()
+            .is_none());
+    }
+
+    #[test]
+    fn test_secp256r1_get_xy() {
+        let p = Secp256r1Point {
+            x: U256 {
+                hi: 97179038819393695679,
+                lo: 330631467365974629050427735731901850225,
+            },
+            y: U256 {
+                hi: 221371427837412271565447410779117722274,
+                lo: 229236926352692519791101729645429586206,
+            },
+        };
+
+        let mut test_syscall_handler = StubSyscallHandler::default();
+        let mut test_syscall_handler = &mut test_syscall_handler;
+
+        assert_eq!(
+            test_syscall_handler.secp256r1_get_xy(p, &mut 10).unwrap(),
+            (
+                U256 {
+                    hi: 97179038819393695679,
+                    lo: 330631467365974629050427735731901850225,
+                },
+                U256 {
+                    hi: 221371427837412271565447410779117722274,
+                    lo: 229236926352692519791101729645429586206,
+                }
+            )
+        )
+    }
+}
+
\ No newline at end of file diff --git a/src/cairo_native/utils.rs.html b/src/cairo_native/utils.rs.html index 8406504c5..94b592926 100644 --- a/src/cairo_native/utils.rs.html +++ b/src/cairo_native/utils.rs.html @@ -1066,261 +1066,6 @@ 1066 1067 1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236 -1237 -1238 -1239 -1240 -1241 -1242 -1243 -1244 -1245 -1246 -1247 -1248 -1249 -1250 -1251 -1252 -1253 -1254 -1255 -1256 -1257 -1258 -1259 -1260 -1261 -1262 -1263 -1264 -1265 -1266 -1267 -1268 -1269 -1270 -1271 -1272 -1273 -1274 -1275 -1276 -1277 -1278 -1279 -1280 -1281 -1282 -1283 -1284 -1285 -1286 -1287 -1288 -1289 -1290 -1291 -1292 -1293 -1294 -1295 -1296 -1297 -1298 -1299 -1300 -1301 -1302 -1303 -1304 -1305 -1306 -1307 -1308 -1309 -1310 -1311 -1312 -1313 -1314 -1315 -1316 -1317 -1318 -1319 -1320 -1321 -1322 -1323
//! # Various utilities
 
 use crate::{
@@ -1846,15 +1591,8 @@
 #[cfg(test)]
 pub mod test {
     use crate::{
-        context::NativeContext,
-        execution_result::ExecutionResult,
-        executor::JitNativeExecutor,
-        starknet::{
-            BlockInfo, ExecutionInfo, ExecutionInfoV2, ResourceBounds, StarknetSyscallHandler,
-            SyscallResult, TxInfo, TxV2Info, U256,
-        },
-        utils::*,
-        values::JitValue,
+        context::NativeContext, execution_result::ExecutionResult, executor::JitNativeExecutor,
+        starknet_stub::StubSyscallHandler, utils::*, values::JitValue,
     };
     use cairo_lang_compiler::{
         compile_prepared_db, db::RootDatabase, diagnostics::DiagnosticsReporter,
@@ -1868,7 +1606,6 @@
     };
     use cairo_lang_starknet::starknet_plugin_suite;
     use pretty_assertions_sorted::assert_eq;
-    use starknet_types_core::felt::Felt;
     use std::io::Write;
     use std::{env::var, fmt::Formatter, fs, path::Path};
 
@@ -1999,7 +1736,7 @@
                 entry_point_id,
                 args,
                 Some(u128::MAX),
-                TestSyscallHandler,
+                &mut StubSyscallHandler::default(),
             )
             .unwrap()
     }
@@ -2396,252 +2133,5 @@
             .keys()
             .any(|func| func.debug_name == Some("hello::hello::greet".into())));
     }
-
-    #[derive(Debug, Clone)]
-    pub struct TestSyscallHandler;
-
-    impl StarknetSyscallHandler for TestSyscallHandler {
-        fn get_block_hash(&mut self, block_number: u64, _gas: &mut u128) -> SyscallResult<Felt> {
-            Ok(Felt::from(block_number))
-        }
-
-        fn get_execution_info(
-            &mut self,
-            _gas: &mut u128,
-        ) -> SyscallResult<crate::starknet::ExecutionInfo> {
-            Ok(ExecutionInfo {
-                block_info: BlockInfo {
-                    block_number: 1234,
-                    block_timestamp: 2345,
-                    sequencer_address: 3456.into(),
-                },
-                tx_info: TxInfo {
-                    version: 4567.into(),
-                    account_contract_address: 5678.into(),
-                    max_fee: 6789,
-                    signature: vec![1248.into(), 2486.into()],
-                    transaction_hash: 9876.into(),
-                    chain_id: 8765.into(),
-                    nonce: 7654.into(),
-                },
-                caller_address: 6543.into(),
-                contract_address: 5432.into(),
-                entry_point_selector: 4321.into(),
-            })
-        }
-
-        fn get_execution_info_v2(
-            &mut self,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<crate::starknet::ExecutionInfoV2> {
-            Ok(ExecutionInfoV2 {
-                block_info: BlockInfo {
-                    block_number: 1234,
-                    block_timestamp: 2345,
-                    sequencer_address: 3456.into(),
-                },
-                tx_info: TxV2Info {
-                    version: 1.into(),
-                    account_contract_address: 1.into(),
-                    max_fee: 0,
-                    signature: vec![1.into()],
-                    transaction_hash: 1.into(),
-                    chain_id: 1.into(),
-                    nonce: 1.into(),
-                    tip: 1,
-                    paymaster_data: vec![1.into()],
-                    nonce_data_availability_mode: 0,
-                    fee_data_availability_mode: 0,
-                    account_deployment_data: vec![1.into()],
-                    resource_bounds: vec![ResourceBounds {
-                        resource: 2.into(),
-                        max_amount: 10,
-                        max_price_per_unit: 20,
-                    }],
-                },
-                caller_address: 6543.into(),
-                contract_address: 5432.into(),
-                entry_point_selector: 4321.into(),
-            })
-        }
-
-        fn deploy(
-            &mut self,
-            class_hash: Felt,
-            contract_address_salt: Felt,
-            calldata: &[Felt],
-            _deploy_from_zero: bool,
-            _gas: &mut u128,
-        ) -> SyscallResult<(Felt, Vec<Felt>)> {
-            Ok((
-                class_hash + contract_address_salt,
-                calldata.iter().map(|x| x + Felt::ONE).collect(),
-            ))
-        }
-
-        fn replace_class(&mut self, _class_hash: Felt, _gas: &mut u128) -> SyscallResult<()> {
-            Ok(())
-        }
-
-        fn library_call(
-            &mut self,
-            _class_hash: Felt,
-            _function_selector: Felt,
-            calldata: &[Felt],
-            _gas: &mut u128,
-        ) -> SyscallResult<Vec<Felt>> {
-            Ok(calldata.iter().map(|x| x * Felt::from(3)).collect())
-        }
-
-        fn call_contract(
-            &mut self,
-            _address: Felt,
-            _entry_point_selector: Felt,
-            calldata: &[Felt],
-            _gas: &mut u128,
-        ) -> SyscallResult<Vec<Felt>> {
-            Ok(calldata.iter().map(|x| x * Felt::from(3)).collect())
-        }
-
-        fn storage_read(
-            &mut self,
-            _address_domain: u32,
-            address: Felt,
-            _gas: &mut u128,
-        ) -> SyscallResult<Felt> {
-            Ok(address * Felt::from(3))
-        }
-
-        fn storage_write(
-            &mut self,
-            _address_domain: u32,
-            _address: Felt,
-            _value: Felt,
-            _gas: &mut u128,
-        ) -> SyscallResult<()> {
-            Ok(())
-        }
-
-        fn emit_event(
-            &mut self,
-            _keys: &[Felt],
-            _data: &[Felt],
-            _gas: &mut u128,
-        ) -> SyscallResult<()> {
-            Ok(())
-        }
-
-        fn send_message_to_l1(
-            &mut self,
-            _to_address: Felt,
-            _payload: &[Felt],
-            _gas: &mut u128,
-        ) -> SyscallResult<()> {
-            Ok(())
-        }
-
-        fn keccak(
-            &mut self,
-            _input: &[u64],
-            gas: &mut u128,
-        ) -> SyscallResult<crate::starknet::U256> {
-            *gas -= 1000;
-            Ok(U256 {
-                hi: 0,
-                lo: 1234567890,
-            })
-        }
-
-        // Implementing the secp256 syscalls for testing doesn't make sense. They're already
-        // properly tested in integration tests.
-
-        fn secp256k1_new(
-            &mut self,
-            _x: U256,
-            _y: U256,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<Option<crate::starknet::Secp256k1Point>> {
-            unimplemented!()
-        }
-
-        fn secp256k1_add(
-            &mut self,
-            _p0: crate::starknet::Secp256k1Point,
-            _p1: crate::starknet::Secp256k1Point,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<crate::starknet::Secp256k1Point> {
-            unimplemented!()
-        }
-
-        fn secp256k1_mul(
-            &mut self,
-            _p: crate::starknet::Secp256k1Point,
-            _m: U256,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<crate::starknet::Secp256k1Point> {
-            unimplemented!()
-        }
-
-        fn secp256k1_get_point_from_x(
-            &mut self,
-            _x: U256,
-            _y_parity: bool,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<Option<crate::starknet::Secp256k1Point>> {
-            unimplemented!()
-        }
-
-        fn secp256k1_get_xy(
-            &mut self,
-            _p: crate::starknet::Secp256k1Point,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<(U256, U256)> {
-            unimplemented!()
-        }
-
-        fn secp256r1_new(
-            &mut self,
-            _x: U256,
-            _y: U256,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<Option<crate::starknet::Secp256r1Point>> {
-            unimplemented!()
-        }
-
-        fn secp256r1_add(
-            &mut self,
-            _p0: crate::starknet::Secp256r1Point,
-            _p1: crate::starknet::Secp256r1Point,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<crate::starknet::Secp256r1Point> {
-            unimplemented!()
-        }
-
-        fn secp256r1_mul(
-            &mut self,
-            _p: crate::starknet::Secp256r1Point,
-            _m: U256,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<crate::starknet::Secp256r1Point> {
-            unimplemented!()
-        }
-
-        fn secp256r1_get_point_from_x(
-            &mut self,
-            _x: U256,
-            _y_parity: bool,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<Option<crate::starknet::Secp256r1Point>> {
-            unimplemented!()
-        }
-
-        fn secp256r1_get_xy(
-            &mut self,
-            _p: crate::starknet::Secp256r1Point,
-            _remaining_gas: &mut u128,
-        ) -> SyscallResult<(U256, U256)> {
-            unimplemented!()
-        }
-    }
 }
 
\ No newline at end of file diff --git a/src/cairo_native_run/utils/test.rs.html b/src/cairo_native_run/utils/test.rs.html index 63164132b..080c81c54 100644 --- a/src/cairo_native_run/utils/test.rs.html +++ b/src/cairo_native_run/utils/test.rs.html @@ -265,975 +265,6 @@ 265 266 267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236
use super::{find_function, format_for_panic, result_to_runresult, RunArgs, RunMode};
 use anyhow::Context;
 use cairo_lang_runner::RunResultValue;
@@ -1246,23 +277,18 @@
 };
 use cairo_lang_utils::casts::IntoOrPanic;
 use cairo_lang_utils::ordered_hash_map::OrderedHashMap;
-use cairo_native::starknet::{Secp256r1Point, SyscallResult, U256};
+use cairo_native::starknet_stub::StubSyscallHandler;
 use cairo_native::{
     context::NativeContext,
     executor::{AotNativeExecutor, JitNativeExecutor, NativeExecutor},
     metadata::gas::{GasMetadata, MetadataComputationConfig},
-    starknet::{Secp256k1Point, StarknetSyscallHandler},
 };
 use colored::Colorize;
 use itertools::Itertools;
-use k256::elliptic_curve::sec1::ToEncodedPoint;
-use k256::elliptic_curve::{generic_array::GenericArray, sec1::FromEncodedPoint};
 use num_traits::ToPrimitive;
 #[cfg(feature = "scarb")]
 use scarb_metadata::{PackageMetadata, TargetMetadata};
-use sec1::point::Coordinates;
-use starknet_types_core::felt::Felt;
-use std::{iter::once, sync::Mutex};
+use std::sync::Mutex;
 
 /// Summary data of the ran tests.
 pub struct TestsSummary {
@@ -1430,7 +456,7 @@
                         &func.id,
                         &[],
                         initial_gas,
-                        TestSyscallHandler,
+                        &mut StubSyscallHandler::default(),
                     )
                     .with_context(|| format!("Failed to run the function `{}`.", name.as_str()))?;
 
@@ -1506,968 +532,4 @@
         });
     wrapped_summary.into_inner().unwrap()
 }
-
-pub struct TestSyscallHandler;
-
-impl StarknetSyscallHandler for TestSyscallHandler {
-    fn get_block_hash(
-        &mut self,
-        _block_number: u64,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn get_execution_info(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfo> {
-        unimplemented!()
-    }
-
-    fn get_execution_info_v2(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfoV2> {
-        unimplemented!()
-    }
-
-    fn deploy(
-        &mut self,
-        _class_hash: Felt,
-        _contract_address_salt: Felt,
-        _calldata: &[Felt],
-        _deploy_from_zero: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(Felt, Vec<Felt>)> {
-        unimplemented!()
-    }
-
-    fn replace_class(&mut self, _class_hash: Felt, _remaining_gas: &mut u128) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn library_call(
-        &mut self,
-        _class_hash: Felt,
-        _function_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn call_contract(
-        &mut self,
-        _address: Felt,
-        _entry_point_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn storage_read(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn storage_write(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _value: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn emit_event(
-        &mut self,
-        _keys: &[Felt],
-        _data: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn send_message_to_l1(
-        &mut self,
-        _to_address: Felt,
-        _payload: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256> {
-        let length = input.len();
-
-        if length % 17 != 0 {
-            let error_msg = b"Invalid keccak input size";
-            let felt_error = Felt::from_bytes_be_slice(error_msg);
-            return Err(vec![felt_error]);
-        }
-
-        let n_chunks = length / 17;
-        let mut state = [0u64; 25];
-
-        for i in 0..n_chunks {
-            if *gas < KECCAK_ROUND_COST {
-                let error_msg = b"Syscall out of gas";
-                let felt_error = Felt::from_bytes_be_slice(error_msg);
-                return Err(vec![felt_error]);
-            }
-            const KECCAK_ROUND_COST: u128 = 180000;
-            *gas -= KECCAK_ROUND_COST;
-            let chunk = &input[i * 17..(i + 1) * 17]; //(request.input_start + i * 17)?;
-            for (i, val) in chunk.iter().enumerate() {
-                state[i] ^= val;
-            }
-            keccak::f1600(&mut state)
-        }
-
-        // state[0] and state[1] conform the hash_high (u128)
-        // state[2] and state[3] conform the hash_low (u128)
-        SyscallResult::Ok(U256 {
-            lo: state[2] as u128 | ((state[3] as u128) << 64),
-            hi: state[0] as u128 | ((state[1] as u128) << 64),
-        })
-    }
-
-    fn secp256k1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256k1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_add(
-        &mut self,
-        p0: Secp256k1Point,
-        p1: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_mul(
-        &mut self,
-        p: Secp256k1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: k256::Scalar = k256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the encoding format, which should be valid
-        // since it's hardcoded..
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_bytes(
-                k256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            // This unwrap has already been checked in the `if` expression's condition.
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => {
-                    // This should be unreachable because we explicitly asked for the uncompressed
-                    // encoding.
-                    unreachable!()
-                }
-            };
-
-            // The following unwrap should be safe because the array always has 32 bytes. The other
-            // two are definitely safe because the slicing guarantees its length to be the right
-            // one.
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256k1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_get_xy(
-        &mut self,
-        p: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-
-    fn secp256r1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256r1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_add(
-        &mut self,
-        p0: Secp256r1Point,
-        p1: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_mul(
-        &mut self,
-        p: Secp256r1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: p256::Scalar = p256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_bytes(
-                p256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => unreachable!(),
-            };
-
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256r1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_get_xy(
-        &mut self,
-        p: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_secp256k1_get_xy() {
-        let p = Secp256k1Point {
-            x: U256 {
-                hi: 331229800296699308591929724809569456681,
-                lo: 240848751772479376198639683648735950585,
-            },
-            y: U256 {
-                hi: 75181762170223969696219813306313470806,
-                lo: 134255467439736302886468555755295925874,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 331229800296699308591929724809569456681,
-                    lo: 240848751772479376198639683648735950585,
-                },
-                U256 {
-                    hi: 75181762170223969696219813306313470806,
-                    lo: 134255467439736302886468555755295925874,
-                }
-            )
-        )
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 68974579539311638391577168388077592842,
-            lo: 26163136114030451075775058782541084873,
-        };
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_new(x, y, &mut 10).unwrap(),
-            Some(Secp256k1Point { x, y })
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256k1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256k1_ssecp256k1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256k1Point {
-            x: U256 {
-                hi: 3468390537006497937951914270391801752,
-                lo: 161825202758953104525843685720298294023,
-            },
-            y: U256 {
-                hi: 336417762351022071123394393598455764152,
-                lo: 96009999919712310848645357523629574312,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256k1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256k1Point {
-            x: U256 {
-                hi: 122909745026270932982812610085084241637,
-                lo: 263210499965038831386353541518668627160,
-            },
-            y: U256 {
-                hi: 329597642124196932058042157271922763050,
-                lo: 35730324229579385338853513728577301230,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256k1Point {
-            x: U256 {
-                hi: 240848751772479376198639683648735950585,
-                lo: 331229800296699308591929724809569456681,
-            },
-            y: U256 {
-                hi: 134255467439736302886468555755295925874,
-                lo: 75181762170223969696219813306313470806,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256k1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    false,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 68974579539311638391577168388077592842,
-                    lo: 26163136114030451075775058782541084873,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    true,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 271307787381626825071797439039395650341,
-                    lo: 314119230806908012387599548649227126582,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert!(test_syscall_handler
-            .secp256k1_get_point_from_x(U256 { hi: 0, lo: 0 }, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_new(x, y, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 0 };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256r1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256r1Point {
-            x: U256 {
-                hi: 330631467365974629050427735731901850225,
-                lo: 97179038819393695679,
-            },
-            y: U256 {
-                hi: 111045440647474106186537215379882575585,
-                lo: 118910939004298029402109603132816090461,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256r1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256r1Point {
-            x: U256 {
-                hi: 309339945874468445579793098896656960879,
-                lo: 280079427190737520201067412903899817878,
-            },
-            y: U256 {
-                hi: 231570843221643745062297421862629788481,
-                lo: 84249534056490759701994051847937833933,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256r1Point {
-            x: U256 {
-                hi: 195259625777021303662291420857740525307,
-                lo: 23850518908906170876551962912581992002,
-            },
-            y: U256 {
-                hi: 282344931843342117515389970197013120959,
-                lo: 178681203065513270100417145499857169664,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256r1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, true, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 229236926352692519791101729645429586206,
-            lo: 221371427837412271565447410779117722274,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, false, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 10 };
-
-        assert!(test_syscall_handler
-            .secp256r1_get_point_from_x(x, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_get_xy() {
-        let p = Secp256r1Point {
-            x: U256 {
-                hi: 97179038819393695679,
-                lo: 330631467365974629050427735731901850225,
-            },
-            y: U256 {
-                hi: 221371427837412271565447410779117722274,
-                lo: 229236926352692519791101729645429586206,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256r1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 97179038819393695679,
-                    lo: 330631467365974629050427735731901850225,
-                },
-                U256 {
-                    hi: 221371427837412271565447410779117722274,
-                    lo: 229236926352692519791101729645429586206,
-                }
-            )
-        )
-    }
-}
 
\ No newline at end of file diff --git a/src/cairo_native_test/utils/test.rs.html b/src/cairo_native_test/utils/test.rs.html index 091095172..e613278b9 100644 --- a/src/cairo_native_test/utils/test.rs.html +++ b/src/cairo_native_test/utils/test.rs.html @@ -265,975 +265,6 @@ 265 266 267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236
use super::{find_function, format_for_panic, result_to_runresult, RunArgs, RunMode};
 use anyhow::Context;
 use cairo_lang_runner::RunResultValue;
@@ -1246,23 +277,18 @@
 };
 use cairo_lang_utils::casts::IntoOrPanic;
 use cairo_lang_utils::ordered_hash_map::OrderedHashMap;
-use cairo_native::starknet::{Secp256r1Point, SyscallResult, U256};
+use cairo_native::starknet_stub::StubSyscallHandler;
 use cairo_native::{
     context::NativeContext,
     executor::{AotNativeExecutor, JitNativeExecutor, NativeExecutor},
     metadata::gas::{GasMetadata, MetadataComputationConfig},
-    starknet::{Secp256k1Point, StarknetSyscallHandler},
 };
 use colored::Colorize;
 use itertools::Itertools;
-use k256::elliptic_curve::sec1::ToEncodedPoint;
-use k256::elliptic_curve::{generic_array::GenericArray, sec1::FromEncodedPoint};
 use num_traits::ToPrimitive;
 #[cfg(feature = "scarb")]
 use scarb_metadata::{PackageMetadata, TargetMetadata};
-use sec1::point::Coordinates;
-use starknet_types_core::felt::Felt;
-use std::{iter::once, sync::Mutex};
+use std::sync::Mutex;
 
 /// Summary data of the ran tests.
 pub struct TestsSummary {
@@ -1430,7 +456,7 @@
                         &func.id,
                         &[],
                         initial_gas,
-                        TestSyscallHandler,
+                        &mut StubSyscallHandler::default(),
                     )
                     .with_context(|| format!("Failed to run the function `{}`.", name.as_str()))?;
 
@@ -1506,968 +532,4 @@
         });
     wrapped_summary.into_inner().unwrap()
 }
-
-pub struct TestSyscallHandler;
-
-impl StarknetSyscallHandler for TestSyscallHandler {
-    fn get_block_hash(
-        &mut self,
-        _block_number: u64,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn get_execution_info(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfo> {
-        unimplemented!()
-    }
-
-    fn get_execution_info_v2(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfoV2> {
-        unimplemented!()
-    }
-
-    fn deploy(
-        &mut self,
-        _class_hash: Felt,
-        _contract_address_salt: Felt,
-        _calldata: &[Felt],
-        _deploy_from_zero: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(Felt, Vec<Felt>)> {
-        unimplemented!()
-    }
-
-    fn replace_class(&mut self, _class_hash: Felt, _remaining_gas: &mut u128) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn library_call(
-        &mut self,
-        _class_hash: Felt,
-        _function_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn call_contract(
-        &mut self,
-        _address: Felt,
-        _entry_point_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn storage_read(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn storage_write(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _value: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn emit_event(
-        &mut self,
-        _keys: &[Felt],
-        _data: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn send_message_to_l1(
-        &mut self,
-        _to_address: Felt,
-        _payload: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256> {
-        let length = input.len();
-
-        if length % 17 != 0 {
-            let error_msg = b"Invalid keccak input size";
-            let felt_error = Felt::from_bytes_be_slice(error_msg);
-            return Err(vec![felt_error]);
-        }
-
-        let n_chunks = length / 17;
-        let mut state = [0u64; 25];
-
-        for i in 0..n_chunks {
-            if *gas < KECCAK_ROUND_COST {
-                let error_msg = b"Syscall out of gas";
-                let felt_error = Felt::from_bytes_be_slice(error_msg);
-                return Err(vec![felt_error]);
-            }
-            const KECCAK_ROUND_COST: u128 = 180000;
-            *gas -= KECCAK_ROUND_COST;
-            let chunk = &input[i * 17..(i + 1) * 17]; //(request.input_start + i * 17)?;
-            for (i, val) in chunk.iter().enumerate() {
-                state[i] ^= val;
-            }
-            keccak::f1600(&mut state)
-        }
-
-        // state[0] and state[1] conform the hash_high (u128)
-        // state[2] and state[3] conform the hash_low (u128)
-        SyscallResult::Ok(U256 {
-            lo: state[2] as u128 | ((state[3] as u128) << 64),
-            hi: state[0] as u128 | ((state[1] as u128) << 64),
-        })
-    }
-
-    fn secp256k1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256k1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_add(
-        &mut self,
-        p0: Secp256k1Point,
-        p1: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_mul(
-        &mut self,
-        p: Secp256k1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: k256::Scalar = k256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the encoding format, which should be valid
-        // since it's hardcoded..
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_bytes(
-                k256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            // This unwrap has already been checked in the `if` expression's condition.
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => {
-                    // This should be unreachable because we explicitly asked for the uncompressed
-                    // encoding.
-                    unreachable!()
-                }
-            };
-
-            // The following unwrap should be safe because the array always has 32 bytes. The other
-            // two are definitely safe because the slicing guarantees its length to be the right
-            // one.
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256k1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_get_xy(
-        &mut self,
-        p: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-
-    fn secp256r1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256r1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_add(
-        &mut self,
-        p0: Secp256r1Point,
-        p1: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_mul(
-        &mut self,
-        p: Secp256r1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: p256::Scalar = p256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_bytes(
-                p256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => unreachable!(),
-            };
-
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256r1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_get_xy(
-        &mut self,
-        p: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_secp256k1_get_xy() {
-        let p = Secp256k1Point {
-            x: U256 {
-                hi: 331229800296699308591929724809569456681,
-                lo: 240848751772479376198639683648735950585,
-            },
-            y: U256 {
-                hi: 75181762170223969696219813306313470806,
-                lo: 134255467439736302886468555755295925874,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 331229800296699308591929724809569456681,
-                    lo: 240848751772479376198639683648735950585,
-                },
-                U256 {
-                    hi: 75181762170223969696219813306313470806,
-                    lo: 134255467439736302886468555755295925874,
-                }
-            )
-        )
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 68974579539311638391577168388077592842,
-            lo: 26163136114030451075775058782541084873,
-        };
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_new(x, y, &mut 10).unwrap(),
-            Some(Secp256k1Point { x, y })
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256k1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256k1_ssecp256k1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256k1Point {
-            x: U256 {
-                hi: 3468390537006497937951914270391801752,
-                lo: 161825202758953104525843685720298294023,
-            },
-            y: U256 {
-                hi: 336417762351022071123394393598455764152,
-                lo: 96009999919712310848645357523629574312,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256k1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256k1Point {
-            x: U256 {
-                hi: 122909745026270932982812610085084241637,
-                lo: 263210499965038831386353541518668627160,
-            },
-            y: U256 {
-                hi: 329597642124196932058042157271922763050,
-                lo: 35730324229579385338853513728577301230,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256k1Point {
-            x: U256 {
-                hi: 240848751772479376198639683648735950585,
-                lo: 331229800296699308591929724809569456681,
-            },
-            y: U256 {
-                hi: 134255467439736302886468555755295925874,
-                lo: 75181762170223969696219813306313470806,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256k1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    false,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 68974579539311638391577168388077592842,
-                    lo: 26163136114030451075775058782541084873,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    true,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 271307787381626825071797439039395650341,
-                    lo: 314119230806908012387599548649227126582,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert!(test_syscall_handler
-            .secp256k1_get_point_from_x(U256 { hi: 0, lo: 0 }, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_new(x, y, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 0 };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256r1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256r1Point {
-            x: U256 {
-                hi: 330631467365974629050427735731901850225,
-                lo: 97179038819393695679,
-            },
-            y: U256 {
-                hi: 111045440647474106186537215379882575585,
-                lo: 118910939004298029402109603132816090461,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256r1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256r1Point {
-            x: U256 {
-                hi: 309339945874468445579793098896656960879,
-                lo: 280079427190737520201067412903899817878,
-            },
-            y: U256 {
-                hi: 231570843221643745062297421862629788481,
-                lo: 84249534056490759701994051847937833933,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256r1Point {
-            x: U256 {
-                hi: 195259625777021303662291420857740525307,
-                lo: 23850518908906170876551962912581992002,
-            },
-            y: U256 {
-                hi: 282344931843342117515389970197013120959,
-                lo: 178681203065513270100417145499857169664,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256r1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, true, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 229236926352692519791101729645429586206,
-            lo: 221371427837412271565447410779117722274,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, false, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 10 };
-
-        assert!(test_syscall_handler
-            .secp256r1_get_point_from_x(x, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_get_xy() {
-        let p = Secp256r1Point {
-            x: U256 {
-                hi: 97179038819393695679,
-                lo: 330631467365974629050427735731901850225,
-            },
-            y: U256 {
-                hi: 221371427837412271565447410779117722274,
-                lo: 229236926352692519791101729645429586206,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256r1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 97179038819393695679,
-                    lo: 330631467365974629050427735731901850225,
-                },
-                U256 {
-                    hi: 221371427837412271565447410779117722274,
-                    lo: 229236926352692519791101729645429586206,
-                }
-            )
-        )
-    }
-}
 
\ No newline at end of file diff --git a/src/scarb_native_dump/utils/test.rs.html b/src/scarb_native_dump/utils/test.rs.html index c8ff38bc4..bb6dd7f60 100644 --- a/src/scarb_native_dump/utils/test.rs.html +++ b/src/scarb_native_dump/utils/test.rs.html @@ -265,975 +265,6 @@ 265 266 267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236
use super::{find_function, format_for_panic, result_to_runresult, RunArgs, RunMode};
 use anyhow::Context;
 use cairo_lang_runner::RunResultValue;
@@ -1246,23 +277,18 @@
 };
 use cairo_lang_utils::casts::IntoOrPanic;
 use cairo_lang_utils::ordered_hash_map::OrderedHashMap;
-use cairo_native::starknet::{Secp256r1Point, SyscallResult, U256};
+use cairo_native::starknet_stub::StubSyscallHandler;
 use cairo_native::{
     context::NativeContext,
     executor::{AotNativeExecutor, JitNativeExecutor, NativeExecutor},
     metadata::gas::{GasMetadata, MetadataComputationConfig},
-    starknet::{Secp256k1Point, StarknetSyscallHandler},
 };
 use colored::Colorize;
 use itertools::Itertools;
-use k256::elliptic_curve::sec1::ToEncodedPoint;
-use k256::elliptic_curve::{generic_array::GenericArray, sec1::FromEncodedPoint};
 use num_traits::ToPrimitive;
 #[cfg(feature = "scarb")]
 use scarb_metadata::{PackageMetadata, TargetMetadata};
-use sec1::point::Coordinates;
-use starknet_types_core::felt::Felt;
-use std::{iter::once, sync::Mutex};
+use std::sync::Mutex;
 
 /// Summary data of the ran tests.
 pub struct TestsSummary {
@@ -1430,7 +456,7 @@
                         &func.id,
                         &[],
                         initial_gas,
-                        TestSyscallHandler,
+                        &mut StubSyscallHandler::default(),
                     )
                     .with_context(|| format!("Failed to run the function `{}`.", name.as_str()))?;
 
@@ -1506,968 +532,4 @@
         });
     wrapped_summary.into_inner().unwrap()
 }
-
-pub struct TestSyscallHandler;
-
-impl StarknetSyscallHandler for TestSyscallHandler {
-    fn get_block_hash(
-        &mut self,
-        _block_number: u64,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn get_execution_info(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfo> {
-        unimplemented!()
-    }
-
-    fn get_execution_info_v2(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfoV2> {
-        unimplemented!()
-    }
-
-    fn deploy(
-        &mut self,
-        _class_hash: Felt,
-        _contract_address_salt: Felt,
-        _calldata: &[Felt],
-        _deploy_from_zero: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(Felt, Vec<Felt>)> {
-        unimplemented!()
-    }
-
-    fn replace_class(&mut self, _class_hash: Felt, _remaining_gas: &mut u128) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn library_call(
-        &mut self,
-        _class_hash: Felt,
-        _function_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn call_contract(
-        &mut self,
-        _address: Felt,
-        _entry_point_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn storage_read(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn storage_write(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _value: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn emit_event(
-        &mut self,
-        _keys: &[Felt],
-        _data: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn send_message_to_l1(
-        &mut self,
-        _to_address: Felt,
-        _payload: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256> {
-        let length = input.len();
-
-        if length % 17 != 0 {
-            let error_msg = b"Invalid keccak input size";
-            let felt_error = Felt::from_bytes_be_slice(error_msg);
-            return Err(vec![felt_error]);
-        }
-
-        let n_chunks = length / 17;
-        let mut state = [0u64; 25];
-
-        for i in 0..n_chunks {
-            if *gas < KECCAK_ROUND_COST {
-                let error_msg = b"Syscall out of gas";
-                let felt_error = Felt::from_bytes_be_slice(error_msg);
-                return Err(vec![felt_error]);
-            }
-            const KECCAK_ROUND_COST: u128 = 180000;
-            *gas -= KECCAK_ROUND_COST;
-            let chunk = &input[i * 17..(i + 1) * 17]; //(request.input_start + i * 17)?;
-            for (i, val) in chunk.iter().enumerate() {
-                state[i] ^= val;
-            }
-            keccak::f1600(&mut state)
-        }
-
-        // state[0] and state[1] conform the hash_high (u128)
-        // state[2] and state[3] conform the hash_low (u128)
-        SyscallResult::Ok(U256 {
-            lo: state[2] as u128 | ((state[3] as u128) << 64),
-            hi: state[0] as u128 | ((state[1] as u128) << 64),
-        })
-    }
-
-    fn secp256k1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256k1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_add(
-        &mut self,
-        p0: Secp256k1Point,
-        p1: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_mul(
-        &mut self,
-        p: Secp256k1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: k256::Scalar = k256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the encoding format, which should be valid
-        // since it's hardcoded..
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_bytes(
-                k256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            // This unwrap has already been checked in the `if` expression's condition.
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => {
-                    // This should be unreachable because we explicitly asked for the uncompressed
-                    // encoding.
-                    unreachable!()
-                }
-            };
-
-            // The following unwrap should be safe because the array always has 32 bytes. The other
-            // two are definitely safe because the slicing guarantees its length to be the right
-            // one.
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256k1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_get_xy(
-        &mut self,
-        p: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-
-    fn secp256r1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256r1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_add(
-        &mut self,
-        p0: Secp256r1Point,
-        p1: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_mul(
-        &mut self,
-        p: Secp256r1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: p256::Scalar = p256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_bytes(
-                p256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => unreachable!(),
-            };
-
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256r1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_get_xy(
-        &mut self,
-        p: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_secp256k1_get_xy() {
-        let p = Secp256k1Point {
-            x: U256 {
-                hi: 331229800296699308591929724809569456681,
-                lo: 240848751772479376198639683648735950585,
-            },
-            y: U256 {
-                hi: 75181762170223969696219813306313470806,
-                lo: 134255467439736302886468555755295925874,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 331229800296699308591929724809569456681,
-                    lo: 240848751772479376198639683648735950585,
-                },
-                U256 {
-                    hi: 75181762170223969696219813306313470806,
-                    lo: 134255467439736302886468555755295925874,
-                }
-            )
-        )
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 68974579539311638391577168388077592842,
-            lo: 26163136114030451075775058782541084873,
-        };
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_new(x, y, &mut 10).unwrap(),
-            Some(Secp256k1Point { x, y })
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256k1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256k1_ssecp256k1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256k1Point {
-            x: U256 {
-                hi: 3468390537006497937951914270391801752,
-                lo: 161825202758953104525843685720298294023,
-            },
-            y: U256 {
-                hi: 336417762351022071123394393598455764152,
-                lo: 96009999919712310848645357523629574312,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256k1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256k1Point {
-            x: U256 {
-                hi: 122909745026270932982812610085084241637,
-                lo: 263210499965038831386353541518668627160,
-            },
-            y: U256 {
-                hi: 329597642124196932058042157271922763050,
-                lo: 35730324229579385338853513728577301230,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256k1Point {
-            x: U256 {
-                hi: 240848751772479376198639683648735950585,
-                lo: 331229800296699308591929724809569456681,
-            },
-            y: U256 {
-                hi: 134255467439736302886468555755295925874,
-                lo: 75181762170223969696219813306313470806,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256k1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    false,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 68974579539311638391577168388077592842,
-                    lo: 26163136114030451075775058782541084873,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    true,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 271307787381626825071797439039395650341,
-                    lo: 314119230806908012387599548649227126582,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert!(test_syscall_handler
-            .secp256k1_get_point_from_x(U256 { hi: 0, lo: 0 }, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_new(x, y, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 0 };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256r1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256r1Point {
-            x: U256 {
-                hi: 330631467365974629050427735731901850225,
-                lo: 97179038819393695679,
-            },
-            y: U256 {
-                hi: 111045440647474106186537215379882575585,
-                lo: 118910939004298029402109603132816090461,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256r1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256r1Point {
-            x: U256 {
-                hi: 309339945874468445579793098896656960879,
-                lo: 280079427190737520201067412903899817878,
-            },
-            y: U256 {
-                hi: 231570843221643745062297421862629788481,
-                lo: 84249534056490759701994051847937833933,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256r1Point {
-            x: U256 {
-                hi: 195259625777021303662291420857740525307,
-                lo: 23850518908906170876551962912581992002,
-            },
-            y: U256 {
-                hi: 282344931843342117515389970197013120959,
-                lo: 178681203065513270100417145499857169664,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256r1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, true, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 229236926352692519791101729645429586206,
-            lo: 221371427837412271565447410779117722274,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, false, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 10 };
-
-        assert!(test_syscall_handler
-            .secp256r1_get_point_from_x(x, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_get_xy() {
-        let p = Secp256r1Point {
-            x: U256 {
-                hi: 97179038819393695679,
-                lo: 330631467365974629050427735731901850225,
-            },
-            y: U256 {
-                hi: 221371427837412271565447410779117722274,
-                lo: 229236926352692519791101729645429586206,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256r1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 97179038819393695679,
-                    lo: 330631467365974629050427735731901850225,
-                },
-                U256 {
-                    hi: 221371427837412271565447410779117722274,
-                    lo: 229236926352692519791101729645429586206,
-                }
-            )
-        )
-    }
-}
 
\ No newline at end of file diff --git a/src/scarb_native_test/utils/test.rs.html b/src/scarb_native_test/utils/test.rs.html index 3b59cae72..cd6b464d1 100644 --- a/src/scarb_native_test/utils/test.rs.html +++ b/src/scarb_native_test/utils/test.rs.html @@ -265,975 +265,6 @@ 265 266 267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236
use super::{find_function, format_for_panic, result_to_runresult, RunArgs, RunMode};
 use anyhow::Context;
 use cairo_lang_runner::RunResultValue;
@@ -1246,23 +277,18 @@
 };
 use cairo_lang_utils::casts::IntoOrPanic;
 use cairo_lang_utils::ordered_hash_map::OrderedHashMap;
-use cairo_native::starknet::{Secp256r1Point, SyscallResult, U256};
+use cairo_native::starknet_stub::StubSyscallHandler;
 use cairo_native::{
     context::NativeContext,
     executor::{AotNativeExecutor, JitNativeExecutor, NativeExecutor},
     metadata::gas::{GasMetadata, MetadataComputationConfig},
-    starknet::{Secp256k1Point, StarknetSyscallHandler},
 };
 use colored::Colorize;
 use itertools::Itertools;
-use k256::elliptic_curve::sec1::ToEncodedPoint;
-use k256::elliptic_curve::{generic_array::GenericArray, sec1::FromEncodedPoint};
 use num_traits::ToPrimitive;
 #[cfg(feature = "scarb")]
 use scarb_metadata::{PackageMetadata, TargetMetadata};
-use sec1::point::Coordinates;
-use starknet_types_core::felt::Felt;
-use std::{iter::once, sync::Mutex};
+use std::sync::Mutex;
 
 /// Summary data of the ran tests.
 pub struct TestsSummary {
@@ -1430,7 +456,7 @@
                         &func.id,
                         &[],
                         initial_gas,
-                        TestSyscallHandler,
+                        &mut StubSyscallHandler::default(),
                     )
                     .with_context(|| format!("Failed to run the function `{}`.", name.as_str()))?;
 
@@ -1506,968 +532,4 @@
         });
     wrapped_summary.into_inner().unwrap()
 }
-
-pub struct TestSyscallHandler;
-
-impl StarknetSyscallHandler for TestSyscallHandler {
-    fn get_block_hash(
-        &mut self,
-        _block_number: u64,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn get_execution_info(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfo> {
-        unimplemented!()
-    }
-
-    fn get_execution_info_v2(
-        &mut self,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<cairo_native::starknet::ExecutionInfoV2> {
-        unimplemented!()
-    }
-
-    fn deploy(
-        &mut self,
-        _class_hash: Felt,
-        _contract_address_salt: Felt,
-        _calldata: &[Felt],
-        _deploy_from_zero: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(Felt, Vec<Felt>)> {
-        unimplemented!()
-    }
-
-    fn replace_class(&mut self, _class_hash: Felt, _remaining_gas: &mut u128) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn library_call(
-        &mut self,
-        _class_hash: Felt,
-        _function_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn call_contract(
-        &mut self,
-        _address: Felt,
-        _entry_point_selector: Felt,
-        _calldata: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Vec<Felt>> {
-        unimplemented!()
-    }
-
-    fn storage_read(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Felt> {
-        unimplemented!()
-    }
-
-    fn storage_write(
-        &mut self,
-        _address_domain: u32,
-        _address: Felt,
-        _value: Felt,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn emit_event(
-        &mut self,
-        _keys: &[Felt],
-        _data: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn send_message_to_l1(
-        &mut self,
-        _to_address: Felt,
-        _payload: &[Felt],
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<()> {
-        unimplemented!()
-    }
-
-    fn keccak(&mut self, input: &[u64], gas: &mut u128) -> SyscallResult<U256> {
-        let length = input.len();
-
-        if length % 17 != 0 {
-            let error_msg = b"Invalid keccak input size";
-            let felt_error = Felt::from_bytes_be_slice(error_msg);
-            return Err(vec![felt_error]);
-        }
-
-        let n_chunks = length / 17;
-        let mut state = [0u64; 25];
-
-        for i in 0..n_chunks {
-            if *gas < KECCAK_ROUND_COST {
-                let error_msg = b"Syscall out of gas";
-                let felt_error = Felt::from_bytes_be_slice(error_msg);
-                return Err(vec![felt_error]);
-            }
-            const KECCAK_ROUND_COST: u128 = 180000;
-            *gas -= KECCAK_ROUND_COST;
-            let chunk = &input[i * 17..(i + 1) * 17]; //(request.input_start + i * 17)?;
-            for (i, val) in chunk.iter().enumerate() {
-                state[i] ^= val;
-            }
-            keccak::f1600(&mut state)
-        }
-
-        // state[0] and state[1] conform the hash_high (u128)
-        // state[2] and state[3] conform the hash_low (u128)
-        SyscallResult::Ok(U256 {
-            lo: state[2] as u128 | ((state[3] as u128) << 64),
-            hi: state[0] as u128 | ((state[1] as u128) << 64),
-        })
-    }
-
-    fn secp256k1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256k1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_add(
-        &mut self,
-        p0: Secp256k1Point,
-        p1: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_mul(
-        &mut self,
-        p: Secp256k1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256k1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: k256::Scalar = k256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256k1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256k1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256k1Point>> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the encoding format, which should be valid
-        // since it's hardcoded..
-        let point = k256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_bytes(
-                k256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            // This unwrap has already been checked in the `if` expression's condition.
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => {
-                    // This should be unreachable because we explicitly asked for the uncompressed
-                    // encoding.
-                    unreachable!()
-                }
-            };
-
-            // The following unwrap should be safe because the array always has 32 bytes. The other
-            // two are definitely safe because the slicing guarantees its length to be the right
-            // one.
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256k1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256k1_get_xy(
-        &mut self,
-        p: Secp256k1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-
-    fn secp256r1_new(
-        &mut self,
-        x: U256,
-        y: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        // The following unwraps should be unreachable because the iterator we provide has the
-        // expected number of bytes.
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &k256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    x.lo.to_be_bytes().into_iter().chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    y.lo.to_be_bytes().into_iter().chain(y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        );
-
-        if bool::from(point.is_some()) {
-            Ok(Some(Secp256r1Point { x, y }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_add(
-        &mut self,
-        p0: Secp256r1Point,
-        p1: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwraps should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwraps depend on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p0 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p0.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p0.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p0.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let p1 = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p1.x.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p1.y.lo
-                        .to_be_bytes()
-                        .into_iter()
-                        .chain(p1.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-
-        let p = p0 + p1;
-
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_mul(
-        &mut self,
-        p: Secp256r1Point,
-        m: U256,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Secp256r1Point> {
-        // The inner unwrap should be unreachable because the iterator we provide has the expected
-        // number of bytes. The outer unwrap depends on the felt values, which should be valid since
-        // they'll be provided by secp256 syscalls.
-        let p = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_affine_coordinates(
-                &GenericArray::from_exact_iter(
-                    p.x.lo.to_be_bytes().into_iter().chain(p.x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                &GenericArray::from_exact_iter(
-                    p.y.lo.to_be_bytes().into_iter().chain(p.y.hi.to_be_bytes()),
-                )
-                .unwrap(),
-                false,
-            ),
-        )
-        .unwrap();
-        let m: p256::Scalar = p256::elliptic_curve::ScalarPrimitive::from_slice(&{
-            let mut buf = [0u8; 32];
-            buf[0..16].copy_from_slice(&m.lo.to_be_bytes());
-            buf[16..32].copy_from_slice(&m.hi.to_be_bytes());
-            buf
-        })
-        .map_err(|_| {
-            vec![Felt::from_bytes_be(
-                b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0invalid scalar",
-            )]
-        })?
-        .into();
-
-        let p = p * m;
-        let p = p.to_encoded_point(false);
-        let (x, y) = match p.coordinates() {
-            Coordinates::Uncompressed { x, y } => (x, y),
-            _ => {
-                // This should be unreachable because we explicitly asked for the uncompressed
-                // encoding.
-                unreachable!()
-            }
-        };
-
-        // The following two unwraps should be safe because the array always has 32 bytes. The other
-        // four are definitely safe because the slicing guarantees its length to be the right one.
-        let x: [u8; 32] = x.as_slice().try_into().unwrap();
-        let y: [u8; 32] = y.as_slice().try_into().unwrap();
-        Ok(Secp256r1Point {
-            x: U256 {
-                lo: u128::from_be_bytes(x[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(x[16..32].try_into().unwrap()),
-            },
-            y: U256 {
-                lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-            },
-        })
-    }
-
-    fn secp256r1_get_point_from_x(
-        &mut self,
-        x: U256,
-        y_parity: bool,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<Option<Secp256r1Point>> {
-        let point = p256::ProjectivePoint::from_encoded_point(
-            &p256::EncodedPoint::from_bytes(
-                p256::CompressedPoint::from_exact_iter(
-                    once(0x02 | y_parity as u8)
-                        .chain(x.lo.to_be_bytes())
-                        .chain(x.hi.to_be_bytes()),
-                )
-                .unwrap(),
-            )
-            .unwrap(),
-        );
-
-        if bool::from(point.is_some()) {
-            let p = point.unwrap();
-
-            let p = p.to_encoded_point(false);
-            let y = match p.coordinates() {
-                Coordinates::Uncompressed { y, .. } => y,
-                _ => unreachable!(),
-            };
-
-            let y: [u8; 32] = y.as_slice().try_into().unwrap();
-            Ok(Some(Secp256r1Point {
-                x,
-                y: U256 {
-                    lo: u128::from_be_bytes(y[0..16].try_into().unwrap()),
-                    hi: u128::from_be_bytes(y[16..32].try_into().unwrap()),
-                },
-            }))
-        } else {
-            Ok(None)
-        }
-    }
-
-    fn secp256r1_get_xy(
-        &mut self,
-        p: Secp256r1Point,
-        _remaining_gas: &mut u128,
-    ) -> SyscallResult<(U256, U256)> {
-        Ok((p.x, p.y))
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_secp256k1_get_xy() {
-        let p = Secp256k1Point {
-            x: U256 {
-                hi: 331229800296699308591929724809569456681,
-                lo: 240848751772479376198639683648735950585,
-            },
-            y: U256 {
-                hi: 75181762170223969696219813306313470806,
-                lo: 134255467439736302886468555755295925874,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 331229800296699308591929724809569456681,
-                    lo: 240848751772479376198639683648735950585,
-                },
-                U256 {
-                    hi: 75181762170223969696219813306313470806,
-                    lo: 134255467439736302886468555755295925874,
-                }
-            )
-        )
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 68974579539311638391577168388077592842,
-            lo: 26163136114030451075775058782541084873,
-        };
-
-        assert_eq!(
-            test_syscall_handler.secp256k1_new(x, y, &mut 10).unwrap(),
-            Some(Secp256k1Point { x, y })
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_secp256k1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256k1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256k1_ssecp256k1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256k1Point {
-            x: U256 {
-                hi: 3468390537006497937951914270391801752,
-                lo: 161825202758953104525843685720298294023,
-            },
-            y: U256 {
-                hi: 336417762351022071123394393598455764152,
-                lo: 96009999919712310848645357523629574312,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256k1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256k1Point {
-            x: U256 {
-                hi: 122909745026270932982812610085084241637,
-                lo: 263210499965038831386353541518668627160,
-            },
-            y: U256 {
-                hi: 329597642124196932058042157271922763050,
-                lo: 35730324229579385338853513728577301230,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256k1Point {
-            x: U256 {
-                hi: 240848751772479376198639683648735950585,
-                lo: 331229800296699308591929724809569456681,
-            },
-            y: U256 {
-                hi: 134255467439736302886468555755295925874,
-                lo: 75181762170223969696219813306313470806,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256k1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    false,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 68974579539311638391577168388077592842,
-                    lo: 26163136114030451075775058782541084873,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256k1_get_point_from_x(
-                    U256 {
-                        hi: 330631467365974629050427735731901850225,
-                        lo: 97179038819393695679,
-                    },
-                    true,
-                    &mut 10
-                )
-                .unwrap()
-                .unwrap(),
-            Secp256k1Point {
-                x: U256 {
-                    hi: 330631467365974629050427735731901850225,
-                    lo: 97179038819393695679,
-                },
-                y: U256 {
-                    hi: 271307787381626825071797439039395650341,
-                    lo: 314119230806908012387599548649227126582,
-                },
-            }
-        );
-    }
-
-    #[test]
-    fn test_secp256k1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert!(test_syscall_handler
-            .secp256k1_get_point_from_x(U256 { hi: 0, lo: 0 }, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_new() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_new(x, y, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_new_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 0 };
-        let y = U256 { hi: 0, lo: 0 };
-
-        assert!(test_syscall_handler
-            .secp256r1_new(x, y, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_add() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let p1 = Secp256r1Point {
-            x: U256 {
-                hi: 330631467365974629050427735731901850225,
-                lo: 97179038819393695679,
-            },
-            y: U256 {
-                hi: 111045440647474106186537215379882575585,
-                lo: 118910939004298029402109603132816090461,
-            },
-        };
-
-        let p2 = p1;
-
-        // 2 * P1
-        let p3 = test_syscall_handler.secp256r1_add(p1, p2, &mut 10).unwrap();
-
-        let p1_double = Secp256r1Point {
-            x: U256 {
-                hi: 309339945874468445579793098896656960879,
-                lo: 280079427190737520201067412903899817878,
-            },
-            y: U256 {
-                hi: 231570843221643745062297421862629788481,
-                lo: 84249534056490759701994051847937833933,
-            },
-        };
-        assert_eq!(p3, p1_double);
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 2, lo: 0 }, &mut 10)
-                .unwrap(),
-            p1_double
-        );
-
-        // 3 * P1
-        let three_p1 = Secp256r1Point {
-            x: U256 {
-                hi: 195259625777021303662291420857740525307,
-                lo: 23850518908906170876551962912581992002,
-            },
-            y: U256 {
-                hi: 282344931843342117515389970197013120959,
-                lo: 178681203065513270100417145499857169664,
-            },
-        };
-        assert_eq!(
-            test_syscall_handler.secp256r1_add(p1, p3, &mut 10).unwrap(),
-            three_p1
-        );
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_mul(p1, U256 { hi: 3, lo: 0 }, &mut 10)
-                .unwrap(),
-            three_p1
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_true_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 111045440647474106186537215379882575585,
-            lo: 118910939004298029402109603132816090461,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, true, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_false_yparity() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 {
-            hi: 330631467365974629050427735731901850225,
-            lo: 97179038819393695679,
-        };
-
-        let y = U256 {
-            hi: 229236926352692519791101729645429586206,
-            lo: 221371427837412271565447410779117722274,
-        };
-
-        assert_eq!(
-            test_syscall_handler
-                .secp256r1_get_point_from_x(x, false, &mut 10)
-                .unwrap()
-                .unwrap(),
-            Secp256r1Point { x, y }
-        );
-    }
-
-    #[test]
-    fn test_secp256r1_get_point_from_x_none() {
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        let x = U256 { hi: 0, lo: 10 };
-
-        assert!(test_syscall_handler
-            .secp256r1_get_point_from_x(x, true, &mut 10)
-            .unwrap()
-            .is_none());
-    }
-
-    #[test]
-    fn test_secp256r1_get_xy() {
-        let p = Secp256r1Point {
-            x: U256 {
-                hi: 97179038819393695679,
-                lo: 330631467365974629050427735731901850225,
-            },
-            y: U256 {
-                hi: 221371427837412271565447410779117722274,
-                lo: 229236926352692519791101729645429586206,
-            },
-        };
-
-        let mut test_syscall_handler = TestSyscallHandler {};
-
-        assert_eq!(
-            test_syscall_handler.secp256r1_get_xy(p, &mut 10).unwrap(),
-            (
-                U256 {
-                    hi: 97179038819393695679,
-                    lo: 330631467365974629050427735731901850225,
-                },
-                U256 {
-                    hi: 221371427837412271565447410779117722274,
-                    lo: 229236926352692519791101729645429586206,
-                }
-            )
-        )
-    }
-}
 
\ No newline at end of file diff --git a/trait.impl/cairo_native/starknet/trait.StarknetSyscallHandler.js b/trait.impl/cairo_native/starknet/trait.StarknetSyscallHandler.js index 421d073d3..c260e5135 100644 --- a/trait.impl/cairo_native/starknet/trait.StarknetSyscallHandler.js +++ b/trait.impl/cairo_native/starknet/trait.StarknetSyscallHandler.js @@ -1,7 +1,3 @@ (function() {var implementors = { -"cairo_native":[], -"cairo_native_run":[["impl StarknetSyscallHandler for TestSyscallHandler"]], -"cairo_native_test":[["impl StarknetSyscallHandler for TestSyscallHandler"]], -"scarb_native_dump":[["impl StarknetSyscallHandler for TestSyscallHandler"]], -"scarb_native_test":[["impl StarknetSyscallHandler for TestSyscallHandler"]] +"cairo_native":[] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js index 5d91147f5..c7c088960 100644 --- a/trait.impl/core/clone/trait.Clone.js +++ b/trait.impl/core/clone/trait.Clone.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"cairo_native":[["impl Clone for OptLevel"],["impl Clone for JitValue"],["impl Clone for DebugInfo"],["impl Clone for BuiltinStats"],["impl Clone for ContractExecutionResult"],["impl Clone for ExecutionResult"],["impl Clone for GasCost"],["impl Clone for GasMetadata"],["impl Clone for MetadataComputationConfig"],["impl Clone for BlockInfo"],["impl Clone for ExecutionInfo"],["impl Clone for ExecutionInfoV2"],["impl Clone for Felt252Abi"],["impl Clone for ResourceBounds"],["impl Clone for Secp256k1Point"],["impl Clone for Secp256r1Point"],["impl Clone for TxInfo"],["impl Clone for TxV2Info"],["impl Clone for U256"],["impl Clone for LLVMCompileError"],["impl Clone for LayoutError"],["impl<'a, T: Clone> Clone for WithSelf<'a, T>"],["impl<'c> Clone for DebugLocations<'c>"],["impl<'ctx, 'a> Clone for BranchTarget<'ctx, 'a>"],["impl<'m> Clone for NativeExecutor<'m>"]], +"cairo_native":[["impl Clone for OptLevel"],["impl Clone for JitValue"],["impl Clone for DebugInfo"],["impl Clone for BuiltinStats"],["impl Clone for ContractExecutionResult"],["impl Clone for ExecutionResult"],["impl Clone for GasCost"],["impl Clone for GasMetadata"],["impl Clone for MetadataComputationConfig"],["impl Clone for BlockInfo"],["impl Clone for ExecutionInfo"],["impl Clone for ExecutionInfoV2"],["impl Clone for Felt252Abi"],["impl Clone for ResourceBounds"],["impl Clone for Secp256k1Point"],["impl Clone for Secp256r1Point"],["impl Clone for TxInfo"],["impl Clone for TxV2Info"],["impl Clone for U256"],["impl Clone for ContractLogs"],["impl Clone for StubEvent"],["impl Clone for StubSyscallHandler"],["impl Clone for LLVMCompileError"],["impl Clone for LayoutError"],["impl<'a, T: Clone> Clone for WithSelf<'a, T>"],["impl<'c> Clone for DebugLocations<'c>"],["impl<'ctx, 'a> Clone for BranchTarget<'ctx, 'a>"],["impl<'m> Clone for NativeExecutor<'m>"]], "cairo_native_compile":[["impl Clone for RunMode"]], "cairo_native_dump":[["impl Clone for CompilerOutput"],["impl Clone for CmdLine"]], "cairo_native_run":[["impl Clone for RunMode"],["impl Clone for RunMode"]], diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js index 2a5544085..efa1152a8 100644 --- a/trait.impl/core/default/trait.Default.js +++ b/trait.impl/core/default/trait.Default.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"cairo_native":[["impl Default for OptLevel"],["impl Default for NativeContext"],["impl Default for BuiltinStats"],["impl Default for ContractExecutionResult"],["impl Default for DebugUtils"],["impl Default for EnumSnapshotVariantsMeta"],["impl Default for GasMetadata"],["impl Default for MetadataComputationConfig"],["impl Default for RuntimeBindingsMeta"],["impl Default for SnapshotClonesMeta"],["impl Default for MetadataStorage"],["impl Default for U256"]] +"cairo_native":[["impl Default for OptLevel"],["impl Default for NativeContext"],["impl Default for BuiltinStats"],["impl Default for ContractExecutionResult"],["impl Default for DebugUtils"],["impl Default for EnumSnapshotVariantsMeta"],["impl Default for GasMetadata"],["impl Default for MetadataComputationConfig"],["impl Default for RuntimeBindingsMeta"],["impl Default for SnapshotClonesMeta"],["impl Default for MetadataStorage"],["impl Default for U256"],["impl Default for ContractLogs"],["impl Default for StubSyscallHandler"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js index 05f456fd7..a7be8a8a6 100644 --- a/trait.impl/core/fmt/trait.Debug.js +++ b/trait.impl/core/fmt/trait.Debug.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"cairo_native":[["impl Debug for OptLevel"],["impl Debug for Error"],["impl Debug for SierraAssertError"],["impl Debug for GasMetadataError"],["impl Debug for JitValue"],["impl Debug for NativeContext"],["impl Debug for DebugInfo"],["impl Debug for BuiltinStats"],["impl Debug for ContractExecutionResult"],["impl Debug for ExecutionResult"],["impl Debug for AotNativeExecutor"],["impl Debug for JitNativeExecutor<'_>"],["impl Debug for DebugUtils"],["impl Debug for GasCost"],["impl Debug for GasMetadata"],["impl Debug for MetadataComputationConfig"],["impl Debug for ReallocBindingsMeta"],["impl Debug for RuntimeBindingsMeta"],["impl Debug for MetadataStorage"],["impl Debug for TailRecursionMeta"],["impl Debug for NativeModule<'_>"],["impl Debug for BlockInfo"],["impl Debug for ExecutionInfo"],["impl Debug for ExecutionInfoV2"],["impl Debug for Felt252Abi"],["impl Debug for ResourceBounds"],["impl Debug for Secp256k1Point"],["impl Debug for Secp256r1Point"],["impl Debug for TxInfo"],["impl Debug for TxV2Info"],["impl Debug for U256"],["impl Debug for LLVMCompileError"],["impl Debug for LayoutError"],["impl<'a, K> Debug for ProgramCache<'a, K>
where\n K: PartialEq + Eq + Hash + Debug,
"],["impl<'a, K> Debug for AotProgramCache<'a, K>
where\n K: PartialEq + Eq + Hash,
"],["impl<'a, K> Debug for JitProgramCache<'a, K>
where\n K: Eq + Hash + PartialEq,
"],["impl<'a, T: Debug> Debug for WithSelf<'a, T>"],["impl<'c> Debug for DebugLocations<'c>"],["impl<'ctx, 'a> Debug for BranchTarget<'ctx, 'a>"],["impl<'m> Debug for NativeExecutor<'m>"],["impl<T: Debug> Debug for PrimeModuloMeta<T>"],["impl<T: Debug> Debug for ArrayAbi<T>"]], +"cairo_native":[["impl Debug for OptLevel"],["impl Debug for Error"],["impl Debug for SierraAssertError"],["impl Debug for GasMetadataError"],["impl Debug for JitValue"],["impl Debug for NativeContext"],["impl Debug for DebugInfo"],["impl Debug for BuiltinStats"],["impl Debug for ContractExecutionResult"],["impl Debug for ExecutionResult"],["impl Debug for AotNativeExecutor"],["impl Debug for JitNativeExecutor<'_>"],["impl Debug for DebugUtils"],["impl Debug for GasCost"],["impl Debug for GasMetadata"],["impl Debug for MetadataComputationConfig"],["impl Debug for ReallocBindingsMeta"],["impl Debug for RuntimeBindingsMeta"],["impl Debug for MetadataStorage"],["impl Debug for TailRecursionMeta"],["impl Debug for NativeModule<'_>"],["impl Debug for BlockInfo"],["impl Debug for ExecutionInfo"],["impl Debug for ExecutionInfoV2"],["impl Debug for Felt252Abi"],["impl Debug for ResourceBounds"],["impl Debug for Secp256k1Point"],["impl Debug for Secp256r1Point"],["impl Debug for TxInfo"],["impl Debug for TxV2Info"],["impl Debug for U256"],["impl Debug for ContractLogs"],["impl Debug for StubEvent"],["impl Debug for StubSyscallHandler"],["impl Debug for LLVMCompileError"],["impl Debug for LayoutError"],["impl<'a, K> Debug for ProgramCache<'a, K>
where\n K: PartialEq + Eq + Hash + Debug,
"],["impl<'a, K> Debug for AotProgramCache<'a, K>
where\n K: PartialEq + Eq + Hash,
"],["impl<'a, K> Debug for JitProgramCache<'a, K>
where\n K: Eq + Hash + PartialEq,
"],["impl<'a, T: Debug> Debug for WithSelf<'a, T>"],["impl<'c> Debug for DebugLocations<'c>"],["impl<'ctx, 'a> Debug for BranchTarget<'ctx, 'a>"],["impl<'m> Debug for NativeExecutor<'m>"],["impl<T: Debug> Debug for PrimeModuloMeta<T>"],["impl<T: Debug> Debug for ArrayAbi<T>"]], "cairo_native_compile":[["impl Debug for RunMode"],["impl Debug for Args"]], "cairo_native_dump":[["impl Debug for CompilerOutput"],["impl Debug for CmdLine"]], "cairo_native_run":[["impl Debug for RunMode"],["impl Debug for RunMode"],["impl Debug for Args"]], diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js index d80f66a2d..76eb8e4fe 100644 --- a/trait.impl/core/marker/trait.Freeze.js +++ b/trait.impl/core/marker/trait.Freeze.js @@ -1,11 +1,11 @@ (function() {var implementors = { -"cairo_native":[["impl Freeze for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Freeze for Error",1,["cairo_native::error::Error"]],["impl Freeze for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Freeze for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Freeze for JitValue",1,["cairo_native::values::JitValue"]],["impl Freeze for NativeContext",1,["cairo_native::context::NativeContext"]],["impl Freeze for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Freeze for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Freeze for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Freeze for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Freeze for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Freeze for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Freeze for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Freeze for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Freeze for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Freeze for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Freeze for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Freeze for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Freeze for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl Freeze for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl Freeze for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Freeze for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Freeze for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Freeze for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Freeze for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Freeze for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Freeze for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Freeze for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Freeze for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Freeze for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Freeze for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Freeze for U256",1,["cairo_native::starknet::U256"]],["impl Freeze for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Freeze for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Freeze for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Freeze for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> Freeze for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> Freeze for ProgramCache<'a, K>",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> Freeze for AotProgramCache<'a, K>",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> Freeze for JitProgramCache<'a, K>",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Freeze for WithSelf<'a, T>",1,["cairo_native::types::WithSelf"]],["impl<'c> Freeze for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> Freeze for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !Freeze for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> Freeze for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> Freeze for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> Freeze for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> Freeze for PrimeModuloMeta<T>",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> Freeze for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]]], +"cairo_native":[["impl Freeze for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Freeze for Error",1,["cairo_native::error::Error"]],["impl Freeze for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Freeze for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Freeze for JitValue",1,["cairo_native::values::JitValue"]],["impl Freeze for NativeContext",1,["cairo_native::context::NativeContext"]],["impl Freeze for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Freeze for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Freeze for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Freeze for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Freeze for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Freeze for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Freeze for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Freeze for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Freeze for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Freeze for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Freeze for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Freeze for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Freeze for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl Freeze for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl Freeze for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Freeze for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Freeze for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Freeze for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Freeze for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Freeze for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Freeze for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Freeze for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Freeze for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Freeze for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Freeze for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Freeze for U256",1,["cairo_native::starknet::U256"]],["impl Freeze for ContractLogs",1,["cairo_native::starknet_stub::ContractLogs"]],["impl Freeze for StubEvent",1,["cairo_native::starknet_stub::StubEvent"]],["impl Freeze for StubSyscallHandler",1,["cairo_native::starknet_stub::StubSyscallHandler"]],["impl Freeze for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Freeze for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Freeze for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Freeze for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> Freeze for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> Freeze for ProgramCache<'a, K>",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> Freeze for AotProgramCache<'a, K>",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> Freeze for JitProgramCache<'a, K>",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Freeze for WithSelf<'a, T>",1,["cairo_native::types::WithSelf"]],["impl<'c> Freeze for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> Freeze for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !Freeze for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> Freeze for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> Freeze for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> Freeze for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> Freeze for PrimeModuloMeta<T>",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> Freeze for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]]], "cairo_native_compile":[["impl Freeze for RunMode",1,["cairo_native_compile::RunMode"]],["impl Freeze for Args",1,["cairo_native_compile::Args"]]], "cairo_native_dump":[["impl Freeze for CompilerOutput",1,["cairo_native_dump::CompilerOutput"]],["impl Freeze for CmdLine",1,["cairo_native_dump::CmdLine"]]], -"cairo_native_run":[["impl Freeze for RunMode",1,["cairo_native_run::RunMode"]],["impl Freeze for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Freeze for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Freeze for Args",1,["cairo_native_run::Args"]],["impl Freeze for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Freeze for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Freeze for TestSyscallHandler",1,["cairo_native_run::utils::test::TestSyscallHandler"]],["impl Freeze for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], +"cairo_native_run":[["impl Freeze for RunMode",1,["cairo_native_run::RunMode"]],["impl Freeze for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Freeze for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Freeze for Args",1,["cairo_native_run::Args"]],["impl Freeze for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Freeze for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Freeze for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], "cairo_native_runtime":[["impl Freeze for DICT_GAS_REFUND_PER_ACCESS",1,["cairo_native_runtime::DICT_GAS_REFUND_PER_ACCESS"]],["impl Freeze for HALF_PRIME",1,["cairo_native_runtime::HALF_PRIME"]]], "cairo_native_stress":[["impl Freeze for StressTestCommand",1,["cairo_native_stress::StressTestCommand"]],["impl<'a, K> Freeze for NaiveAotCache<'a, K>",1,["cairo_native_stress::NaiveAotCache"]]], -"cairo_native_test":[["impl Freeze for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Freeze for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Freeze for Args",1,["cairo_native_test::Args"]],["impl Freeze for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Freeze for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Freeze for TestSyscallHandler",1,["cairo_native_test::utils::test::TestSyscallHandler"]],["impl Freeze for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], -"scarb_native_dump":[["impl Freeze for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Freeze for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Freeze for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Freeze for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Freeze for TestSyscallHandler",1,["scarb_native_dump::utils::test::TestSyscallHandler"]],["impl Freeze for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], -"scarb_native_test":[["impl Freeze for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Freeze for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Freeze for Args",1,["scarb_native_test::Args"]],["impl Freeze for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Freeze for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Freeze for TestSyscallHandler",1,["scarb_native_test::utils::test::TestSyscallHandler"]],["impl Freeze for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] +"cairo_native_test":[["impl Freeze for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Freeze for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Freeze for Args",1,["cairo_native_test::Args"]],["impl Freeze for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Freeze for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Freeze for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], +"scarb_native_dump":[["impl Freeze for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Freeze for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Freeze for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Freeze for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Freeze for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], +"scarb_native_test":[["impl Freeze for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Freeze for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Freeze for Args",1,["scarb_native_test::Args"]],["impl Freeze for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Freeze for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Freeze for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js index ad3339b53..ee3af0984 100644 --- a/trait.impl/core/marker/trait.Send.js +++ b/trait.impl/core/marker/trait.Send.js @@ -1,11 +1,11 @@ (function() {var implementors = { -"cairo_native":[["impl !Send for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !Send for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl !Send for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Send for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Send for Error",1,["cairo_native::error::Error"]],["impl Send for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Send for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Send for JitValue",1,["cairo_native::values::JitValue"]],["impl Send for NativeContext"],["impl Send for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Send for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Send for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Send for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Send for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Send for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Send for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Send for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Send for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Send for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Send for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Send for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Send for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Send for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Send for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Send for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Send for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Send for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Send for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Send for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Send for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Send for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Send for U256",1,["cairo_native::starknet::U256"]],["impl Send for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Send for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Send for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Send for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !Send for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> !Send for ProgramCache<'a, K>",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> !Send for AotProgramCache<'a, K>",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> !Send for JitProgramCache<'a, K>",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Send for WithSelf<'a, T>
where\n T: Sync,
",1,["cairo_native::types::WithSelf"]],["impl<'c> !Send for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> !Send for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !Send for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !Send for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> !Send for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> !Send for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> !Send for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]],["impl<T> Send for PrimeModuloMeta<T>
where\n T: Send,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]]], +"cairo_native":[["impl !Send for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !Send for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl !Send for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Send for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Send for Error",1,["cairo_native::error::Error"]],["impl Send for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Send for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Send for JitValue",1,["cairo_native::values::JitValue"]],["impl Send for NativeContext"],["impl Send for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Send for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Send for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Send for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Send for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Send for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Send for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Send for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Send for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Send for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Send for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Send for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Send for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Send for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Send for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Send for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Send for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Send for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Send for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Send for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Send for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Send for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Send for U256",1,["cairo_native::starknet::U256"]],["impl Send for ContractLogs",1,["cairo_native::starknet_stub::ContractLogs"]],["impl Send for StubEvent",1,["cairo_native::starknet_stub::StubEvent"]],["impl Send for StubSyscallHandler",1,["cairo_native::starknet_stub::StubSyscallHandler"]],["impl Send for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Send for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Send for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Send for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !Send for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> !Send for ProgramCache<'a, K>",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> !Send for AotProgramCache<'a, K>",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> !Send for JitProgramCache<'a, K>",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Send for WithSelf<'a, T>
where\n T: Sync,
",1,["cairo_native::types::WithSelf"]],["impl<'c> !Send for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> !Send for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !Send for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !Send for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> !Send for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> !Send for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> !Send for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]],["impl<T> Send for PrimeModuloMeta<T>
where\n T: Send,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]]], "cairo_native_compile":[["impl Send for RunMode",1,["cairo_native_compile::RunMode"]],["impl Send for Args",1,["cairo_native_compile::Args"]]], "cairo_native_dump":[["impl Send for CompilerOutput",1,["cairo_native_dump::CompilerOutput"]],["impl Send for CmdLine",1,["cairo_native_dump::CmdLine"]]], -"cairo_native_run":[["impl Send for RunMode",1,["cairo_native_run::RunMode"]],["impl Send for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Send for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Send for Args",1,["cairo_native_run::Args"]],["impl Send for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Send for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Send for TestSyscallHandler",1,["cairo_native_run::utils::test::TestSyscallHandler"]],["impl Send for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], +"cairo_native_run":[["impl Send for RunMode",1,["cairo_native_run::RunMode"]],["impl Send for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Send for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Send for Args",1,["cairo_native_run::Args"]],["impl Send for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Send for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Send for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], "cairo_native_runtime":[["impl Send for DICT_GAS_REFUND_PER_ACCESS",1,["cairo_native_runtime::DICT_GAS_REFUND_PER_ACCESS"]],["impl Send for HALF_PRIME",1,["cairo_native_runtime::HALF_PRIME"]]], "cairo_native_stress":[["impl Send for StressTestCommand",1,["cairo_native_stress::StressTestCommand"]],["impl<'a, K> !Send for NaiveAotCache<'a, K>",1,["cairo_native_stress::NaiveAotCache"]]], -"cairo_native_test":[["impl Send for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Send for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Send for Args",1,["cairo_native_test::Args"]],["impl Send for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Send for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Send for TestSyscallHandler",1,["cairo_native_test::utils::test::TestSyscallHandler"]],["impl Send for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], -"scarb_native_dump":[["impl Send for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Send for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Send for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Send for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Send for TestSyscallHandler",1,["scarb_native_dump::utils::test::TestSyscallHandler"]],["impl Send for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], -"scarb_native_test":[["impl Send for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Send for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Send for Args",1,["scarb_native_test::Args"]],["impl Send for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Send for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Send for TestSyscallHandler",1,["scarb_native_test::utils::test::TestSyscallHandler"]],["impl Send for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] +"cairo_native_test":[["impl Send for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Send for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Send for Args",1,["cairo_native_test::Args"]],["impl Send for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Send for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Send for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], +"scarb_native_dump":[["impl Send for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Send for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Send for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Send for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Send for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], +"scarb_native_test":[["impl Send for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Send for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Send for Args",1,["scarb_native_test::Args"]],["impl Send for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Send for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Send for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js index d5e4fbfc8..e7626293f 100644 --- a/trait.impl/core/marker/trait.Sync.js +++ b/trait.impl/core/marker/trait.Sync.js @@ -1,11 +1,11 @@ (function() {var implementors = { -"cairo_native":[["impl !Sync for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !Sync for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl !Sync for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Sync for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Sync for Error",1,["cairo_native::error::Error"]],["impl Sync for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Sync for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Sync for JitValue",1,["cairo_native::values::JitValue"]],["impl Sync for NativeContext"],["impl Sync for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Sync for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Sync for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Sync for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Sync for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Sync for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Sync for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Sync for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Sync for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Sync for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Sync for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Sync for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Sync for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Sync for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Sync for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Sync for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Sync for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Sync for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Sync for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Sync for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Sync for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Sync for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Sync for U256",1,["cairo_native::starknet::U256"]],["impl Sync for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Sync for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Sync for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Sync for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !Sync for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> !Sync for ProgramCache<'a, K>",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> !Sync for AotProgramCache<'a, K>",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> !Sync for JitProgramCache<'a, K>",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Sync for WithSelf<'a, T>
where\n T: Sync,
",1,["cairo_native::types::WithSelf"]],["impl<'c> !Sync for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> !Sync for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !Sync for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !Sync for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> !Sync for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> !Sync for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> !Sync for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]],["impl<T> Sync for PrimeModuloMeta<T>
where\n T: Sync,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]]], +"cairo_native":[["impl !Sync for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !Sync for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl !Sync for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Sync for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Sync for Error",1,["cairo_native::error::Error"]],["impl Sync for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Sync for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Sync for JitValue",1,["cairo_native::values::JitValue"]],["impl Sync for NativeContext"],["impl Sync for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Sync for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Sync for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Sync for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Sync for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Sync for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Sync for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Sync for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Sync for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Sync for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Sync for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Sync for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Sync for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Sync for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Sync for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Sync for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Sync for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Sync for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Sync for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Sync for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Sync for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Sync for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Sync for U256",1,["cairo_native::starknet::U256"]],["impl Sync for ContractLogs",1,["cairo_native::starknet_stub::ContractLogs"]],["impl Sync for StubEvent",1,["cairo_native::starknet_stub::StubEvent"]],["impl Sync for StubSyscallHandler",1,["cairo_native::starknet_stub::StubSyscallHandler"]],["impl Sync for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Sync for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Sync for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Sync for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !Sync for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> !Sync for ProgramCache<'a, K>",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> !Sync for AotProgramCache<'a, K>",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> !Sync for JitProgramCache<'a, K>",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Sync for WithSelf<'a, T>
where\n T: Sync,
",1,["cairo_native::types::WithSelf"]],["impl<'c> !Sync for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> !Sync for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !Sync for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !Sync for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> !Sync for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> !Sync for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> !Sync for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]],["impl<T> Sync for PrimeModuloMeta<T>
where\n T: Sync,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]]], "cairo_native_compile":[["impl Sync for RunMode",1,["cairo_native_compile::RunMode"]],["impl Sync for Args",1,["cairo_native_compile::Args"]]], "cairo_native_dump":[["impl Sync for CompilerOutput",1,["cairo_native_dump::CompilerOutput"]],["impl Sync for CmdLine",1,["cairo_native_dump::CmdLine"]]], -"cairo_native_run":[["impl Sync for RunMode",1,["cairo_native_run::RunMode"]],["impl Sync for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Sync for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Sync for Args",1,["cairo_native_run::Args"]],["impl Sync for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Sync for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Sync for TestSyscallHandler",1,["cairo_native_run::utils::test::TestSyscallHandler"]],["impl Sync for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], +"cairo_native_run":[["impl Sync for RunMode",1,["cairo_native_run::RunMode"]],["impl Sync for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Sync for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Sync for Args",1,["cairo_native_run::Args"]],["impl Sync for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Sync for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Sync for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], "cairo_native_runtime":[["impl Sync for DICT_GAS_REFUND_PER_ACCESS",1,["cairo_native_runtime::DICT_GAS_REFUND_PER_ACCESS"]],["impl Sync for HALF_PRIME",1,["cairo_native_runtime::HALF_PRIME"]]], "cairo_native_stress":[["impl Sync for StressTestCommand",1,["cairo_native_stress::StressTestCommand"]],["impl<'a, K> !Sync for NaiveAotCache<'a, K>",1,["cairo_native_stress::NaiveAotCache"]]], -"cairo_native_test":[["impl Sync for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Sync for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Sync for Args",1,["cairo_native_test::Args"]],["impl Sync for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Sync for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Sync for TestSyscallHandler",1,["cairo_native_test::utils::test::TestSyscallHandler"]],["impl Sync for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], -"scarb_native_dump":[["impl Sync for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Sync for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Sync for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Sync for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Sync for TestSyscallHandler",1,["scarb_native_dump::utils::test::TestSyscallHandler"]],["impl Sync for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], -"scarb_native_test":[["impl Sync for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Sync for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Sync for Args",1,["scarb_native_test::Args"]],["impl Sync for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Sync for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Sync for TestSyscallHandler",1,["scarb_native_test::utils::test::TestSyscallHandler"]],["impl Sync for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] +"cairo_native_test":[["impl Sync for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Sync for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Sync for Args",1,["cairo_native_test::Args"]],["impl Sync for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Sync for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Sync for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], +"scarb_native_dump":[["impl Sync for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Sync for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Sync for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Sync for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Sync for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], +"scarb_native_test":[["impl Sync for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Sync for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Sync for Args",1,["scarb_native_test::Args"]],["impl Sync for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Sync for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Sync for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js index 3dd5def94..b4b9688af 100644 --- a/trait.impl/core/marker/trait.Unpin.js +++ b/trait.impl/core/marker/trait.Unpin.js @@ -1,11 +1,11 @@ (function() {var implementors = { -"cairo_native":[["impl Unpin for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Unpin for Error",1,["cairo_native::error::Error"]],["impl Unpin for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Unpin for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Unpin for JitValue",1,["cairo_native::values::JitValue"]],["impl Unpin for NativeContext",1,["cairo_native::context::NativeContext"]],["impl Unpin for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Unpin for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Unpin for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Unpin for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Unpin for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Unpin for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Unpin for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Unpin for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Unpin for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Unpin for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Unpin for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Unpin for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Unpin for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl Unpin for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl Unpin for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Unpin for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Unpin for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Unpin for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Unpin for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Unpin for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Unpin for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Unpin for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Unpin for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Unpin for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Unpin for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Unpin for U256",1,["cairo_native::starknet::U256"]],["impl Unpin for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Unpin for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Unpin for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Unpin for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> Unpin for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> Unpin for ProgramCache<'a, K>
where\n K: Unpin,
",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> Unpin for AotProgramCache<'a, K>
where\n K: Unpin,
",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> Unpin for JitProgramCache<'a, K>
where\n K: Unpin,
",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Unpin for WithSelf<'a, T>",1,["cairo_native::types::WithSelf"]],["impl<'c> Unpin for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> Unpin for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> Unpin for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> Unpin for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> Unpin for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> Unpin for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> Unpin for PrimeModuloMeta<T>
where\n T: Unpin,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> Unpin for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]]], +"cairo_native":[["impl Unpin for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl Unpin for Error",1,["cairo_native::error::Error"]],["impl Unpin for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl Unpin for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl Unpin for JitValue",1,["cairo_native::values::JitValue"]],["impl Unpin for NativeContext",1,["cairo_native::context::NativeContext"]],["impl Unpin for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl Unpin for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl Unpin for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl Unpin for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl Unpin for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl Unpin for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl Unpin for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl Unpin for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl Unpin for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl Unpin for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl Unpin for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl Unpin for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl Unpin for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl Unpin for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl Unpin for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl Unpin for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl Unpin for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl Unpin for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl Unpin for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl Unpin for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl Unpin for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl Unpin for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl Unpin for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl Unpin for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl Unpin for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl Unpin for U256",1,["cairo_native::starknet::U256"]],["impl Unpin for ContractLogs",1,["cairo_native::starknet_stub::ContractLogs"]],["impl Unpin for StubEvent",1,["cairo_native::starknet_stub::StubEvent"]],["impl Unpin for StubSyscallHandler",1,["cairo_native::starknet_stub::StubSyscallHandler"]],["impl Unpin for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl Unpin for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl Unpin for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl Unpin for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> Unpin for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> Unpin for ProgramCache<'a, K>
where\n K: Unpin,
",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> Unpin for AotProgramCache<'a, K>
where\n K: Unpin,
",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> Unpin for JitProgramCache<'a, K>
where\n K: Unpin,
",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> Unpin for WithSelf<'a, T>",1,["cairo_native::types::WithSelf"]],["impl<'c> Unpin for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> Unpin for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> Unpin for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> Unpin for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> Unpin for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<'m> Unpin for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<T> Unpin for PrimeModuloMeta<T>
where\n T: Unpin,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> Unpin for ArrayAbi<T>",1,["cairo_native::starknet::ArrayAbi"]]], "cairo_native_compile":[["impl Unpin for RunMode",1,["cairo_native_compile::RunMode"]],["impl Unpin for Args",1,["cairo_native_compile::Args"]]], "cairo_native_dump":[["impl Unpin for CompilerOutput",1,["cairo_native_dump::CompilerOutput"]],["impl Unpin for CmdLine",1,["cairo_native_dump::CmdLine"]]], -"cairo_native_run":[["impl Unpin for RunMode",1,["cairo_native_run::RunMode"]],["impl Unpin for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Unpin for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Unpin for Args",1,["cairo_native_run::Args"]],["impl Unpin for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Unpin for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Unpin for TestSyscallHandler",1,["cairo_native_run::utils::test::TestSyscallHandler"]],["impl Unpin for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], +"cairo_native_run":[["impl Unpin for RunMode",1,["cairo_native_run::RunMode"]],["impl Unpin for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl Unpin for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl Unpin for Args",1,["cairo_native_run::Args"]],["impl Unpin for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl Unpin for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl Unpin for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], "cairo_native_runtime":[["impl Unpin for DICT_GAS_REFUND_PER_ACCESS",1,["cairo_native_runtime::DICT_GAS_REFUND_PER_ACCESS"]],["impl Unpin for HALF_PRIME",1,["cairo_native_runtime::HALF_PRIME"]]], "cairo_native_stress":[["impl Unpin for StressTestCommand",1,["cairo_native_stress::StressTestCommand"]],["impl<'a, K> Unpin for NaiveAotCache<'a, K>
where\n K: Unpin,
",1,["cairo_native_stress::NaiveAotCache"]]], -"cairo_native_test":[["impl Unpin for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Unpin for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Unpin for Args",1,["cairo_native_test::Args"]],["impl Unpin for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Unpin for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Unpin for TestSyscallHandler",1,["cairo_native_test::utils::test::TestSyscallHandler"]],["impl Unpin for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], -"scarb_native_dump":[["impl Unpin for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Unpin for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Unpin for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Unpin for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Unpin for TestSyscallHandler",1,["scarb_native_dump::utils::test::TestSyscallHandler"]],["impl Unpin for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], -"scarb_native_test":[["impl Unpin for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Unpin for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Unpin for Args",1,["scarb_native_test::Args"]],["impl Unpin for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Unpin for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Unpin for TestSyscallHandler",1,["scarb_native_test::utils::test::TestSyscallHandler"]],["impl Unpin for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] +"cairo_native_test":[["impl Unpin for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl Unpin for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl Unpin for Args",1,["cairo_native_test::Args"]],["impl Unpin for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl Unpin for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl Unpin for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], +"scarb_native_dump":[["impl Unpin for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl Unpin for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl Unpin for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl Unpin for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl Unpin for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], +"scarb_native_test":[["impl Unpin for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl Unpin for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl Unpin for Args",1,["scarb_native_test::Args"]],["impl Unpin for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl Unpin for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl Unpin for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index ed063877a..b88e6cc1c 100644 --- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,11 +1,11 @@ (function() {var implementors = { -"cairo_native":[["impl !RefUnwindSafe for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !RefUnwindSafe for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl RefUnwindSafe for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl RefUnwindSafe for Error",1,["cairo_native::error::Error"]],["impl RefUnwindSafe for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl RefUnwindSafe for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl RefUnwindSafe for JitValue",1,["cairo_native::values::JitValue"]],["impl RefUnwindSafe for NativeContext",1,["cairo_native::context::NativeContext"]],["impl RefUnwindSafe for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl RefUnwindSafe for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl RefUnwindSafe for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl RefUnwindSafe for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl RefUnwindSafe for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl RefUnwindSafe for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl RefUnwindSafe for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl RefUnwindSafe for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl RefUnwindSafe for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl RefUnwindSafe for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl RefUnwindSafe for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl RefUnwindSafe for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl RefUnwindSafe for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl RefUnwindSafe for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl RefUnwindSafe for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl RefUnwindSafe for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl RefUnwindSafe for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl RefUnwindSafe for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl RefUnwindSafe for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl RefUnwindSafe for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl RefUnwindSafe for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl RefUnwindSafe for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl RefUnwindSafe for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl RefUnwindSafe for U256",1,["cairo_native::starknet::U256"]],["impl RefUnwindSafe for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl RefUnwindSafe for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl RefUnwindSafe for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl RefUnwindSafe for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !RefUnwindSafe for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> RefUnwindSafe for ProgramCache<'a, K>
where\n K: RefUnwindSafe,
",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> RefUnwindSafe for AotProgramCache<'a, K>
where\n K: RefUnwindSafe,
",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> RefUnwindSafe for JitProgramCache<'a, K>
where\n K: RefUnwindSafe,
",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> RefUnwindSafe for WithSelf<'a, T>
where\n T: RefUnwindSafe,
",1,["cairo_native::types::WithSelf"]],["impl<'c> RefUnwindSafe for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> RefUnwindSafe for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !RefUnwindSafe for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !RefUnwindSafe for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<'m> RefUnwindSafe for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> RefUnwindSafe for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<T> RefUnwindSafe for PrimeModuloMeta<T>
where\n T: RefUnwindSafe,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> RefUnwindSafe for ArrayAbi<T>
where\n T: RefUnwindSafe,
",1,["cairo_native::starknet::ArrayAbi"]]], +"cairo_native":[["impl !RefUnwindSafe for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !RefUnwindSafe for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl RefUnwindSafe for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl RefUnwindSafe for Error",1,["cairo_native::error::Error"]],["impl RefUnwindSafe for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl RefUnwindSafe for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl RefUnwindSafe for JitValue",1,["cairo_native::values::JitValue"]],["impl RefUnwindSafe for NativeContext",1,["cairo_native::context::NativeContext"]],["impl RefUnwindSafe for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl RefUnwindSafe for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl RefUnwindSafe for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl RefUnwindSafe for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl RefUnwindSafe for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl RefUnwindSafe for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl RefUnwindSafe for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl RefUnwindSafe for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl RefUnwindSafe for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl RefUnwindSafe for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl RefUnwindSafe for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl RefUnwindSafe for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl RefUnwindSafe for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl RefUnwindSafe for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl RefUnwindSafe for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl RefUnwindSafe for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl RefUnwindSafe for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl RefUnwindSafe for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl RefUnwindSafe for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl RefUnwindSafe for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl RefUnwindSafe for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl RefUnwindSafe for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl RefUnwindSafe for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl RefUnwindSafe for U256",1,["cairo_native::starknet::U256"]],["impl RefUnwindSafe for ContractLogs",1,["cairo_native::starknet_stub::ContractLogs"]],["impl RefUnwindSafe for StubEvent",1,["cairo_native::starknet_stub::StubEvent"]],["impl RefUnwindSafe for StubSyscallHandler",1,["cairo_native::starknet_stub::StubSyscallHandler"]],["impl RefUnwindSafe for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl RefUnwindSafe for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl RefUnwindSafe for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl RefUnwindSafe for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !RefUnwindSafe for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> RefUnwindSafe for ProgramCache<'a, K>
where\n K: RefUnwindSafe,
",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> RefUnwindSafe for AotProgramCache<'a, K>
where\n K: RefUnwindSafe,
",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> RefUnwindSafe for JitProgramCache<'a, K>
where\n K: RefUnwindSafe,
",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> RefUnwindSafe for WithSelf<'a, T>
where\n T: RefUnwindSafe,
",1,["cairo_native::types::WithSelf"]],["impl<'c> RefUnwindSafe for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> RefUnwindSafe for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !RefUnwindSafe for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !RefUnwindSafe for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<'m> RefUnwindSafe for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> RefUnwindSafe for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<T> RefUnwindSafe for PrimeModuloMeta<T>
where\n T: RefUnwindSafe,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> RefUnwindSafe for ArrayAbi<T>
where\n T: RefUnwindSafe,
",1,["cairo_native::starknet::ArrayAbi"]]], "cairo_native_compile":[["impl RefUnwindSafe for RunMode",1,["cairo_native_compile::RunMode"]],["impl RefUnwindSafe for Args",1,["cairo_native_compile::Args"]]], "cairo_native_dump":[["impl RefUnwindSafe for CompilerOutput",1,["cairo_native_dump::CompilerOutput"]],["impl RefUnwindSafe for CmdLine",1,["cairo_native_dump::CmdLine"]]], -"cairo_native_run":[["impl RefUnwindSafe for RunMode",1,["cairo_native_run::RunMode"]],["impl RefUnwindSafe for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl RefUnwindSafe for Args",1,["cairo_native_run::Args"]],["impl RefUnwindSafe for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl RefUnwindSafe for TestSyscallHandler",1,["cairo_native_run::utils::test::TestSyscallHandler"]],["impl RefUnwindSafe for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], +"cairo_native_run":[["impl RefUnwindSafe for RunMode",1,["cairo_native_run::RunMode"]],["impl RefUnwindSafe for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl RefUnwindSafe for Args",1,["cairo_native_run::Args"]],["impl RefUnwindSafe for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl RefUnwindSafe for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], "cairo_native_runtime":[["impl RefUnwindSafe for DICT_GAS_REFUND_PER_ACCESS",1,["cairo_native_runtime::DICT_GAS_REFUND_PER_ACCESS"]],["impl RefUnwindSafe for HALF_PRIME",1,["cairo_native_runtime::HALF_PRIME"]]], "cairo_native_stress":[["impl RefUnwindSafe for StressTestCommand",1,["cairo_native_stress::StressTestCommand"]],["impl<'a, K> RefUnwindSafe for NaiveAotCache<'a, K>
where\n K: RefUnwindSafe,
",1,["cairo_native_stress::NaiveAotCache"]]], -"cairo_native_test":[["impl RefUnwindSafe for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl RefUnwindSafe for Args",1,["cairo_native_test::Args"]],["impl RefUnwindSafe for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl RefUnwindSafe for TestSyscallHandler",1,["cairo_native_test::utils::test::TestSyscallHandler"]],["impl RefUnwindSafe for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], -"scarb_native_dump":[["impl RefUnwindSafe for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl RefUnwindSafe for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl RefUnwindSafe for TestSyscallHandler",1,["scarb_native_dump::utils::test::TestSyscallHandler"]],["impl RefUnwindSafe for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], -"scarb_native_test":[["impl RefUnwindSafe for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl RefUnwindSafe for Args",1,["scarb_native_test::Args"]],["impl RefUnwindSafe for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl RefUnwindSafe for TestSyscallHandler",1,["scarb_native_test::utils::test::TestSyscallHandler"]],["impl RefUnwindSafe for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] +"cairo_native_test":[["impl RefUnwindSafe for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl RefUnwindSafe for Args",1,["cairo_native_test::Args"]],["impl RefUnwindSafe for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl RefUnwindSafe for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], +"scarb_native_dump":[["impl RefUnwindSafe for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl RefUnwindSafe for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl RefUnwindSafe for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], +"scarb_native_test":[["impl RefUnwindSafe for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl RefUnwindSafe for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl RefUnwindSafe for Args",1,["scarb_native_test::Args"]],["impl RefUnwindSafe for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl RefUnwindSafe for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl RefUnwindSafe for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index d1a9c7c28..a06089401 100644 --- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,11 +1,11 @@ (function() {var implementors = { -"cairo_native":[["impl !UnwindSafe for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !UnwindSafe for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl UnwindSafe for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl UnwindSafe for Error",1,["cairo_native::error::Error"]],["impl UnwindSafe for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl UnwindSafe for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl UnwindSafe for JitValue",1,["cairo_native::values::JitValue"]],["impl UnwindSafe for NativeContext",1,["cairo_native::context::NativeContext"]],["impl UnwindSafe for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl UnwindSafe for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl UnwindSafe for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl UnwindSafe for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl UnwindSafe for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl UnwindSafe for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl UnwindSafe for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl UnwindSafe for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl UnwindSafe for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl UnwindSafe for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl UnwindSafe for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl UnwindSafe for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl UnwindSafe for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl UnwindSafe for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl UnwindSafe for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl UnwindSafe for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl UnwindSafe for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl UnwindSafe for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl UnwindSafe for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl UnwindSafe for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl UnwindSafe for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl UnwindSafe for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl UnwindSafe for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl UnwindSafe for U256",1,["cairo_native::starknet::U256"]],["impl UnwindSafe for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl UnwindSafe for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl UnwindSafe for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl UnwindSafe for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !UnwindSafe for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> UnwindSafe for ProgramCache<'a, K>
where\n K: UnwindSafe,
",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> UnwindSafe for AotProgramCache<'a, K>
where\n K: UnwindSafe,
",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> UnwindSafe for JitProgramCache<'a, K>
where\n K: UnwindSafe,
",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> UnwindSafe for WithSelf<'a, T>
where\n T: RefUnwindSafe,
",1,["cairo_native::types::WithSelf"]],["impl<'c> UnwindSafe for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> UnwindSafe for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !UnwindSafe for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !UnwindSafe for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<'m> UnwindSafe for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> UnwindSafe for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<T> UnwindSafe for PrimeModuloMeta<T>
where\n T: UnwindSafe,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> UnwindSafe for ArrayAbi<T>
where\n T: RefUnwindSafe,
",1,["cairo_native::starknet::ArrayAbi"]]], +"cairo_native":[["impl !UnwindSafe for SnapshotClonesMeta",1,["cairo_native::metadata::snapshot_clones::SnapshotClonesMeta"]],["impl !UnwindSafe for MetadataStorage",1,["cairo_native::metadata::MetadataStorage"]],["impl UnwindSafe for OptLevel",1,["cairo_native::ffi::OptLevel"]],["impl UnwindSafe for Error",1,["cairo_native::error::Error"]],["impl UnwindSafe for SierraAssertError",1,["cairo_native::error::SierraAssertError"]],["impl UnwindSafe for GasMetadataError",1,["cairo_native::metadata::gas::GasMetadataError"]],["impl UnwindSafe for JitValue",1,["cairo_native::values::JitValue"]],["impl UnwindSafe for NativeContext",1,["cairo_native::context::NativeContext"]],["impl UnwindSafe for DebugInfo",1,["cairo_native::debug_info::DebugInfo"]],["impl UnwindSafe for BuiltinStats",1,["cairo_native::execution_result::BuiltinStats"]],["impl UnwindSafe for ContractExecutionResult",1,["cairo_native::execution_result::ContractExecutionResult"]],["impl UnwindSafe for ExecutionResult",1,["cairo_native::execution_result::ExecutionResult"]],["impl UnwindSafe for AotNativeExecutor",1,["cairo_native::executor::aot::AotNativeExecutor"]],["impl UnwindSafe for DebugUtils",1,["cairo_native::metadata::debug_utils::DebugUtils"]],["impl UnwindSafe for EnumSnapshotVariantsMeta",1,["cairo_native::metadata::enum_snapshot_variants::EnumSnapshotVariantsMeta"]],["impl UnwindSafe for GasCost",1,["cairo_native::metadata::gas::GasCost"]],["impl UnwindSafe for GasMetadata",1,["cairo_native::metadata::gas::GasMetadata"]],["impl UnwindSafe for MetadataComputationConfig",1,["cairo_native::metadata::gas::MetadataComputationConfig"]],["impl UnwindSafe for ReallocBindingsMeta",1,["cairo_native::metadata::realloc_bindings::ReallocBindingsMeta"]],["impl UnwindSafe for RuntimeBindingsMeta",1,["cairo_native::metadata::runtime_bindings::RuntimeBindingsMeta"]],["impl UnwindSafe for TailRecursionMeta",1,["cairo_native::metadata::tail_recursion::TailRecursionMeta"]],["impl UnwindSafe for BlockInfo",1,["cairo_native::starknet::BlockInfo"]],["impl UnwindSafe for DummySyscallHandler",1,["cairo_native::starknet::DummySyscallHandler"]],["impl UnwindSafe for ExecutionInfo",1,["cairo_native::starknet::ExecutionInfo"]],["impl UnwindSafe for ExecutionInfoV2",1,["cairo_native::starknet::ExecutionInfoV2"]],["impl UnwindSafe for Felt252Abi",1,["cairo_native::starknet::Felt252Abi"]],["impl UnwindSafe for ResourceBounds",1,["cairo_native::starknet::ResourceBounds"]],["impl UnwindSafe for Secp256k1Point",1,["cairo_native::starknet::Secp256k1Point"]],["impl UnwindSafe for Secp256r1Point",1,["cairo_native::starknet::Secp256r1Point"]],["impl UnwindSafe for TxInfo",1,["cairo_native::starknet::TxInfo"]],["impl UnwindSafe for TxV2Info",1,["cairo_native::starknet::TxV2Info"]],["impl UnwindSafe for U256",1,["cairo_native::starknet::U256"]],["impl UnwindSafe for ContractLogs",1,["cairo_native::starknet_stub::ContractLogs"]],["impl UnwindSafe for StubEvent",1,["cairo_native::starknet_stub::StubEvent"]],["impl UnwindSafe for StubSyscallHandler",1,["cairo_native::starknet_stub::StubSyscallHandler"]],["impl UnwindSafe for LLVMCompileError",1,["cairo_native::ffi::LLVMCompileError"]],["impl UnwindSafe for HALF_PRIME",1,["cairo_native::types::felt252::HALF_PRIME"]],["impl UnwindSafe for PRIME",1,["cairo_native::types::felt252::PRIME"]],["impl UnwindSafe for LayoutError",1,["cairo_native::utils::LayoutError"]],["impl<'a> !UnwindSafe for ArgumentMapper<'a>",1,["cairo_native::executor::ArgumentMapper"]],["impl<'a, K> UnwindSafe for ProgramCache<'a, K>
where\n K: UnwindSafe,
",1,["cairo_native::cache::ProgramCache"]],["impl<'a, K> UnwindSafe for AotProgramCache<'a, K>
where\n K: UnwindSafe,
",1,["cairo_native::cache::aot::AotProgramCache"]],["impl<'a, K> UnwindSafe for JitProgramCache<'a, K>
where\n K: UnwindSafe,
",1,["cairo_native::cache::jit::JitProgramCache"]],["impl<'a, T> UnwindSafe for WithSelf<'a, T>
where\n T: RefUnwindSafe,
",1,["cairo_native::types::WithSelf"]],["impl<'c> UnwindSafe for DebugLocations<'c>",1,["cairo_native::debug_info::DebugLocations"]],["impl<'ctx, 'a> UnwindSafe for BranchTarget<'ctx, 'a>",1,["cairo_native::libfuncs::BranchTarget"]],["impl<'ctx, 'this> !UnwindSafe for LibfuncHelper<'ctx, 'this>",1,["cairo_native::libfuncs::LibfuncHelper"]],["impl<'m> !UnwindSafe for NativeModule<'m>",1,["cairo_native::module::NativeModule"]],["impl<'m> UnwindSafe for NativeExecutor<'m>",1,["cairo_native::executor::NativeExecutor"]],["impl<'m> UnwindSafe for JitNativeExecutor<'m>",1,["cairo_native::executor::jit::JitNativeExecutor"]],["impl<T> UnwindSafe for PrimeModuloMeta<T>
where\n T: UnwindSafe,
",1,["cairo_native::metadata::prime_modulo::PrimeModuloMeta"]],["impl<T> UnwindSafe for ArrayAbi<T>
where\n T: RefUnwindSafe,
",1,["cairo_native::starknet::ArrayAbi"]]], "cairo_native_compile":[["impl UnwindSafe for RunMode",1,["cairo_native_compile::RunMode"]],["impl UnwindSafe for Args",1,["cairo_native_compile::Args"]]], "cairo_native_dump":[["impl UnwindSafe for CompilerOutput",1,["cairo_native_dump::CompilerOutput"]],["impl UnwindSafe for CmdLine",1,["cairo_native_dump::CmdLine"]]], -"cairo_native_run":[["impl UnwindSafe for RunMode",1,["cairo_native_run::RunMode"]],["impl UnwindSafe for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl UnwindSafe for Args",1,["cairo_native_run::Args"]],["impl UnwindSafe for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl UnwindSafe for TestSyscallHandler",1,["cairo_native_run::utils::test::TestSyscallHandler"]],["impl UnwindSafe for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], +"cairo_native_run":[["impl UnwindSafe for RunMode",1,["cairo_native_run::RunMode"]],["impl UnwindSafe for RunMode",1,["cairo_native_run::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["cairo_native_run::utils::test::TestStatus"]],["impl UnwindSafe for Args",1,["cairo_native_run::Args"]],["impl UnwindSafe for RunArgs",1,["cairo_native_run::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["cairo_native_run::utils::test::TestResult"]],["impl UnwindSafe for TestsSummary",1,["cairo_native_run::utils::test::TestsSummary"]]], "cairo_native_runtime":[["impl UnwindSafe for DICT_GAS_REFUND_PER_ACCESS",1,["cairo_native_runtime::DICT_GAS_REFUND_PER_ACCESS"]],["impl UnwindSafe for HALF_PRIME",1,["cairo_native_runtime::HALF_PRIME"]]], "cairo_native_stress":[["impl UnwindSafe for StressTestCommand",1,["cairo_native_stress::StressTestCommand"]],["impl<'a, K> UnwindSafe for NaiveAotCache<'a, K>
where\n K: UnwindSafe,
",1,["cairo_native_stress::NaiveAotCache"]]], -"cairo_native_test":[["impl UnwindSafe for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl UnwindSafe for Args",1,["cairo_native_test::Args"]],["impl UnwindSafe for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl UnwindSafe for TestSyscallHandler",1,["cairo_native_test::utils::test::TestSyscallHandler"]],["impl UnwindSafe for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], -"scarb_native_dump":[["impl UnwindSafe for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl UnwindSafe for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl UnwindSafe for TestSyscallHandler",1,["scarb_native_dump::utils::test::TestSyscallHandler"]],["impl UnwindSafe for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], -"scarb_native_test":[["impl UnwindSafe for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl UnwindSafe for Args",1,["scarb_native_test::Args"]],["impl UnwindSafe for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl UnwindSafe for TestSyscallHandler",1,["scarb_native_test::utils::test::TestSyscallHandler"]],["impl UnwindSafe for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] +"cairo_native_test":[["impl UnwindSafe for RunMode",1,["cairo_native_test::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["cairo_native_test::utils::test::TestStatus"]],["impl UnwindSafe for Args",1,["cairo_native_test::Args"]],["impl UnwindSafe for RunArgs",1,["cairo_native_test::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["cairo_native_test::utils::test::TestResult"]],["impl UnwindSafe for TestsSummary",1,["cairo_native_test::utils::test::TestsSummary"]]], +"scarb_native_dump":[["impl UnwindSafe for RunMode",1,["scarb_native_dump::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["scarb_native_dump::utils::test::TestStatus"]],["impl UnwindSafe for RunArgs",1,["scarb_native_dump::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["scarb_native_dump::utils::test::TestResult"]],["impl UnwindSafe for TestsSummary",1,["scarb_native_dump::utils::test::TestsSummary"]]], +"scarb_native_test":[["impl UnwindSafe for RunMode",1,["scarb_native_test::utils::RunMode"]],["impl UnwindSafe for TestStatus",1,["scarb_native_test::utils::test::TestStatus"]],["impl UnwindSafe for Args",1,["scarb_native_test::Args"]],["impl UnwindSafe for RunArgs",1,["scarb_native_test::utils::RunArgs"]],["impl UnwindSafe for TestResult",1,["scarb_native_test::utils::test::TestResult"]],["impl UnwindSafe for TestsSummary",1,["scarb_native_test::utils::test::TestsSummary"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file