Module cairo_native::executor
source · Expand description
§Executors
+Module cairo_native::executor
source · Expand description
§Executors
This module provides methods to execute the programs, either via JIT or compiled ahead of time. It also provides a cache to avoid recompiling previously compiled programs.
Structs§
- Please look at the module level docs.
- A MLIR JIT execution engine in the context of Cairo Native.
Struct cairo_native::executor::AotContractExecutor
source · pub struct AotContractExecutor { /* private fields */ }
Expand description
Please look at the module level docs.
-Implementations§
Implementations§
source§impl AotContractExecutor
impl AotContractExecutor
sourcepub fn new(
sierra_program: &Program,
entry_points: &ContractEntryPoints,
opt_level: OptLevel,
-) -> Result<Self, Error>
pub fn new( sierra_program: &Program, entry_points: &ContractEntryPoints, opt_level: OptLevel, -) -> Result<Self, Error>
Create the executor from a sierra program with the given optimization level. +) -> Result<Self>
Create the executor from a sierra program with the given optimization level.
You can save the library on the desired location later using save
.
If not saved, the path is treated as
a temporary file an deleted when dropped.
If you loaded a ContractExecutor using [load
] then it will not be treated as a temp file.
sourcepub fn save(&mut self, to: impl AsRef<Path>) -> Result<(), Error>
pub fn save(&mut self, to: impl AsRef<Path>) -> Result<(), Error>
Save the library to the desired path, alongside it is saved also a json file with additional info.
-sourcepub fn save(&mut self, to: impl AsRef<Path>) -> Result<()>
pub fn save(&mut self, to: impl AsRef<Path>) -> Result<()>
Save the library to the desired path, alongside it is saved also a json file with additional info.
+sourcepub fn load(library_path: &Path) -> Result<Self>
pub fn load(library_path: &Path) -> Result<Self>
Load the executor from an already compiled library with the additional info json file.
+sourcepub fn run(
&self,
selector: Felt,
args: &[Felt],
gas: u64,
builtin_costs: Option<BuiltinCosts>,
syscall_handler: impl StarknetSyscallHandler,
-) -> Result<ContractExecutionResult, Error>
pub fn run( &self, selector: Felt, args: &[Felt], gas: u64, builtin_costs: Option<BuiltinCosts>, syscall_handler: impl StarknetSyscallHandler, -) -> Result<ContractExecutionResult, Error>
Runs the entry point by the given selector.
+) -> Result<ContractExecutionResult>Runs the entry point by the given selector.
- selector: The selector of the entry point to run.
- args: The calldata. @@ -26,11 +26,11 @@
- syscall_handler: The syscall handler implementation to use when executing the contract.
The entry point gas cost is not deducted from the gas counter.
-pub fn find_function_ptr( +
pub fn find_function_ptr( &self, function_id: &FunctionId, is_for_contract_executor: bool, -) -> Result<*mut c_void, Error>
pub fn find_symbol_ptr(&self, name: &str) -> Option<*mut c_void>
Trait Implementations§
source§impl Clone for AotContractExecutor
impl Clone for AotContractExecutor
source§fn clone(&self) -> AotContractExecutor
fn clone(&self) -> AotContractExecutor
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for AotContractExecutor
impl Debug for AotContractExecutor
Auto Trait Implementations§
impl Freeze for AotContractExecutor
impl RefUnwindSafe for AotContractExecutor
impl Send for AotContractExecutor
impl Sync for AotContractExecutor
impl Unpin for AotContractExecutor
impl UnwindSafe for AotContractExecutor
Blanket Implementations§
Trait Implementations§
source§impl Clone for AotContractExecutor
impl Clone for AotContractExecutor
source§fn clone(&self) -> AotContractExecutor
fn clone(&self) -> AotContractExecutor
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for AotContractExecutor
impl Debug for AotContractExecutor
Auto Trait Implementations§
impl Freeze for AotContractExecutor
impl RefUnwindSafe for AotContractExecutor
impl Send for AotContractExecutor
impl Sync for AotContractExecutor
impl Unpin for AotContractExecutor
impl UnwindSafe for AotContractExecutor
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
diff --git a/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html b/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html
index 827698b82..20aa63d89 100644
--- a/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html
+++ b/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html
@@ -1 +1 @@
-SYSCALL_HANDLER_VTABLE in cairo_native::starknet - Rust Constant cairo_native::starknet::SYSCALL_HANDLER_VTABLE
source · pub const SYSCALL_HANDLER_VTABLE: LocalKey<Cell<*mut ()>>;
\ No newline at end of file
+SYSCALL_HANDLER_VTABLE in cairo_native::starknet - Rust Constant cairo_native::starknet::SYSCALL_HANDLER_VTABLE
source · pub const SYSCALL_HANDLER_VTABLE: LocalKey<Cell<*mut ()>>;
\ No newline at end of file
diff --git a/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html b/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html
index 27c59dd32..af5180dc9 100644
--- a/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html
+++ b/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html
@@ -1,4 +1,4 @@
-cairo_native__vtable_cheatcode in cairo_native::starknet - Rust Function cairo_native::starknet::cairo_native__vtable_cheatcode
source · pub extern "C" fn cairo_native__vtable_cheatcode(
+cairo_native__vtable_cheatcode in cairo_native::starknet - Rust Function cairo_native::starknet::cairo_native__vtable_cheatcode
source · pub extern "C" fn cairo_native__vtable_cheatcode(
result_ptr: &mut ArrayAbi<Felt252Abi>,
selector: &Felt252Abi,
input: &ArrayAbi<Felt252Abi>,
diff --git a/cairo_native/starknet/index.html b/cairo_native/starknet/index.html
index 494cb1417..81181e74c 100644
--- a/cairo_native/starknet/index.html
+++ b/cairo_native/starknet/index.html
@@ -1,2 +1,2 @@
-cairo_native::starknet - Rust Module cairo_native::starknet
source · Expand description
Starknet related code for cairo_native
+cairo_native::starknet - Rust
\ No newline at end of file
diff --git a/help.html b/help.html
index d6fdaa571..a6bb2beac 100644
--- a/help.html
+++ b/help.html
@@ -1 +1 @@
-Help Rustdoc help
Back
\ No newline at end of file
+Help Rustdoc help
Back
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
index 82f7c8c85..46d0914ef 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["cairo_native",{"t":"PPPPPPPPPPPPPPGPPPPPPPPPPPPPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNHNNCNNCNNNNNNNNCNNNNNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHQQHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCNNNNNNNNNNNNNNNNCNNNNNNNNNNOOOOOOOOOOOPEPEGCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHCCCCCCCCPPPPPGPPPGPPPPPPPPPPPPPPPPPPPPIPPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNFFFNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNOONNNOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNCNNNNNNNNNNNNNNNNNNNCNNNNNCCCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNCNNNNNNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNNNMNOOOMNMNNNNNNNNNNNNNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNFFFNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHNNNNNNNNNNNNNNNNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNFJFJSNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNOHNNHHNNNNNNNNNNONNNNNHHHNNHHHNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNNNNHNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNH","n":["Aggressive","Array","BoundedInt","Bytes31","Default","EcPoint","EcState","Enum","Felt252","Felt252Dict","IntRange","Less","None","Null","OptLevel","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","Value","__clone_box","","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","clone","","clone_into","","clone_to_uninit","","cmp","compare","compile","conceal","","context","cyan","","debug","default","deref","","deref_mut","","deserialize","dim","","docs","drop","","eq","","equivalent","","","","","","","","error","execution_result","executor","fg","","fixed","","fmt","","from","","","","","","","","","","","","","","","","","","green","","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","metadata","module","module_to_object","native_assert","native_panic","object_to_shared_lib","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","partial_cmp","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","serialize","starknet","starknet_stub","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","utils","vzip","","whenever","","white","","wrap","","yellow","","debug_name","","","fields","range","tag","value","","","x","y","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","","","green","init","internal_rewrite","","","","","","","into","invert","italic","jit","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AotProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","JitProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","context","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeContext","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile","conceal","context","cyan","default","deref","deref_mut","dim","drop","eq","equivalent","","","","fg","fixed","fmt","from","green","init","initialize_mlir","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","libfunc_to_name","section01","section02","section03","section04","section05","section06","section07","section08","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","IntegerConversion","IntegerLikeTypeExpected","IoError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","LibraryLoadError","LinkError","MissingBuiltinCostsSymbol","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","NativeAssert","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SelectorNotFound","SerdeJsonError","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","fg","","","fixed","","","fmt","","","","","","from","","","","","","","","","","","","","","","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","make_missing_parameter","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","panic","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","source","strike","","","to_smolstr","","","to_string","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","range","value","ranges","NativeAssertError","ToNativeAssertError","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","to_native_assert_error","to_smolstr","to_string","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","","","attr","","","bg","","","bitwise","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","builtin_stats","circuit_add","circuit_mul","clear","","","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize","","","dim","","","drop","","","ec_op","eq","","","equivalent","","","","","","","","","","","","error_msg","failure_flag","fg","","","fixed","","","fmt","","","from","","","from_execution_result","green","","","hash","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","partial_cmp","","pedersen","poseidon","primary","","","quirk","","","range_check","range_check_96","rapid_blink","","","red","","","remaining_gas","","resetting","","","return_value","return_values","rgb","","","segment_arena","serialize","","","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","AotContractExecutor","AotNativeExecutor","JitNativeExecutor","__clone_box","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","clone_into","clone_to_uninit","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","","fg","","","find_function_ptr","","","find_symbol_ptr","","","fixed","","","fmt","","","from","","","from_native_module","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","invoke_contract_dynamic","","invoke_dynamic","","invoke_dynamic_with_syscall_handler","","italic","","","linger","","","load","magenta","","","mask","","","module","new","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","program_registry","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run","save","strike","","","to_owned","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","MetadataStorage","attr","auto_breakpoint","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_utils","default","deref","deref_mut","dim","drop","drop_overrides","dup_overrides","enum_snapshot_variants","fg","fixed","fmt","from","gas","get","get_mut","get_or_insert_with","green","init","insert","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc_bindings","red","remove","resetting","rgb","runtime_bindings","strike","tail_recursion","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","","add_event","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","cyan","","default","deref","","deref_mut","","dim","","drop","","eq","equivalent","","","","fg","","fixed","","fmt","","from","","green","","has_event","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","maybe_breakpoint","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","type_id","variant_idx","DebugUtils","attr","bg","black","blink","blue","bold","borrow","borrow_mut","breakpoint_marker","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_breakpoint_trap","debug_print","default","deref","deref_mut","dim","drop","dump_mem","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","quirk","rapid_blink","red","register_impls","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DropOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DupOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","EnumSnapshotVariantsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","from","get_variants","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","set_mapping","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","","","ap_change_info","attr","","","","bg","","","","black","","","","blink","","","","blue","","","","bold","","","","borrow","","","","borrow_mut","","","","bright","","","","bright_black","","","","bright_blue","","","","bright_cyan","","","","bright_green","","","","bright_magenta","","","","bright_red","","","","bright_white","","","","bright_yellow","","","","clear","","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","","cyan","","","","default","","deref","","","","deref_mut","","","","dim","","","","drop","","","","eq","","","equivalent","","","","","","","","","","","","fg","","","","fixed","","","","fmt","","","","","from","","","","","","function_set_costs","gas_info","get_gas_cost_for_statement_and_cost_token_type","get_gas_costs_for_statement","get_initial_available_gas","green","","","","hash","init","","","","initial_required_gas","initial_required_gas_for_entry_points","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","invert","","","","italic","","","","linear_ap_change_solver","linear_gas_solver","linger","","","","magenta","","","","mask","","","","new","on_black","","","","on_blue","","","","on_bright","","","","on_bright_black","","","","on_bright_blue","","","","on_bright_cyan","","","","on_bright_green","","","","on_bright_magenta","","","","on_bright_red","","","","on_bright_white","","","","on_bright_yellow","","","","on_cyan","","","","on_fixed","","","","on_green","","","","on_magenta","","","","on_primary","","","","on_red","","","","on_rgb","","","","on_white","","","","on_yellow","","","","primary","","","","quirk","","","","rapid_blink","","","","red","","","","resetting","","","","rgb","","","","source","strike","","","","to_owned","","","to_smolstr","to_string","try_from","","","","try_into","","","","type_id","","","","underline","","","","upcast","","","","upcast_mut","","","","vzip","","","","whenever","","","","white","","","","wrap","","","","yellow","","","","gas","ReallocBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","free","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","RuntimeBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dict_drop","dict_dup","dict_gas_refund","dict_get","dict_insert","dict_new","dim","drop","fg","fixed","fmt","from","get_gas_builtin","green","init","internal_rewrite","","","","","","","into","invert","italic","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_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vtable_cheatcode","vzip","whenever","white","wrap","yellow","TailRecursionMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","depth_counter","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","recursion_target","red","resetting","return_target","rgb","set_return_target","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeModule","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get_metadata","green","init","insert_metadata","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","metadata","module","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","program_registry","quirk","rapid_blink","red","remove_metadata","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","","","","","","","","","","account_contract_address","","account_deployment_data","attr","","","","","","","","","","","","bg","","","","","","","","","","","","black","","","","","","","","","","","","blink","","","","","","","","","","","","block_info","","block_number","block_timestamp","blue","","","","","","","","","","","","bold","","","","","","","","","","","","borrow","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","bright","","","","","","","","","","","","bright_black","","","","","","","","","","","","bright_blue","","","","","","","","","","","","bright_cyan","","","","","","","","","","","","bright_green","","","","","","","","","","","","bright_magenta","","","","","","","","","","","","bright_red","","","","","","","","","","","","bright_white","","","","","","","","","","","","bright_yellow","","","","","","","","","","","","cairo_native__vtable_cheatcode","call_contract","","caller_address","","capacity","chain_id","","cheatcode","clear","","","","","","","","","","","","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","","","","","","","compare","","","","","","","conceal","","","","","","","","","","","","contract_address","","cyan","","","","","","","","","","","","default","","","deploy","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","dim","","","","","","","","","","","","drop","","","","","","","","","","","","emit_event","","entry_point_selector","","eq","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fee_data_availability_mode","fg","","","","","","","","","","","","fixed","","","","","","","","","","","","fmt","","","","","","","","","","","from","","","","","","","","","","","","get_block_hash","","get_class_hash_at","","get_execution_info","","get_execution_info_v2","","green","","","","","","","","","","","","hash","","","","","","","","","hi","init","","","","","","","","","","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","invert","","","","","","","","","","","","is_infinity","","italic","","","","","","","","","","","","keccak","","library_call","","linger","","","","","","","","","","","","lo","magenta","","","","","","","","","","","","mask","","","","","","","","","","","","max_amount","max_fee","","max_price_per_unit","new","","nonce","","nonce_data_availability_mode","on_black","","","","","","","","","","","","on_blue","","","","","","","","","","","","on_bright","","","","","","","","","","","","on_bright_black","","","","","","","","","","","","on_bright_blue","","","","","","","","","","","","on_bright_cyan","","","","","","","","","","","","on_bright_green","","","","","","","","","","","","on_bright_magenta","","","","","","","","","","","","on_bright_red","","","","","","","","","","","","on_bright_white","","","","","","","","","","","","on_bright_yellow","","","","","","","","","","","","on_cyan","","","","","","","","","","","","on_fixed","","","","","","","","","","","","on_green","","","","","","","","","","","","on_magenta","","","","","","","","","","","","on_primary","","","","","","","","","","","","on_red","","","","","","","","","","","","on_rgb","","","","","","","","","","","","on_white","","","","","","","","","","","","on_yellow","","","","","","","","","","","","partial_cmp","","","","","","","paymaster_data","primary","","","","","","","","","","","","ptr","quirk","","","","","","","","","","","","rapid_blink","","","","","","","","","","","","red","","","","","","","","","","","","replace_class","","resetting","","","","","","","","","","","","resource","resource_bounds","rgb","","","","","","","","","","","","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","","sequencer_address","serialize","","","","","","","","","sha256_process_block","","signature","","since","storage_read","","storage_write","","strike","","","","","","","","","","","","tip","to_owned","","","","","","","","","","transaction_hash","","try_from","","","","","","","","","","","","try_into","","","","","","","","","","","","tx_info","","type_id","","","","","","","","","","","","underline","","","","","","","","","","","","until","upcast","","","","","","","","","","","","upcast_mut","","","","","","","","","","","","version","","vzip","","","","","","","","","","","","whenever","","","","","","","","","","","","white","","","","","","","","","","","","wrap","","","","","","","","","","","","x","","y","","yellow","","","","","","","","","","","","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","","","attr","","","bg","","","big4int_to_u256","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","call_contract","cheatcode","clear","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","cyan","","","data","decode_felts_as_str","default","","deploy","deref","","","deref_mut","","","dim","","","drop","","","emit_event","encode_str_as_felts","events","","execution_info","fg","","","fixed","","","fmt","","","from","","","get_block_hash","get_class_hash_at","get_execution_info","get_execution_info_v2","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","keccak","keys","l2_to_l1_messages","library_call","linger","","","logs","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","quirk","","","rapid_blink","","","red","","","replace_class","resetting","","","rgb","","","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","sha256_process_block","storage","storage_read","storage_write","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","u256_to_biguint","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","BuiltinCosts","HALF_PRIME","LayoutError","PRIME","SHARED_LIBRARY_EXT","__clone_box","","add_mod","attr","","bg","","bitwise","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cairo_to_sierra","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","const","create_engine","cyan","","debug_with","decode_error_message","default","deref","","deref_mut","","deserialize","dim","","drop","","ecop","eq","equivalent","","","","felt252_bigint","felt252_short_str","felt252_str","fg","","find_entry_point","find_entry_point_by_idx","find_function_id","fixed","","fmt","","","from","","generate_function_name","get_integer_layout","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","layout_repeat","linger","","magenta","","mask","","mem_tracing","mul_mod","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","padding_needed_for","pedersen","poseidon","primary","","quirk","","rapid_blink","","red","","register_runtime_symbols","resetting","","rgb","","run_pass_manager","serialize","strike","","to_owned","","to_smolstr","to_string","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","report_stats"],"q":[[0,"cairo_native"],[251,"cairo_native::Value"],[262,"cairo_native::cache"],[352,"cairo_native::cache::aot"],[437,"cairo_native::cache::jit"],[523,"cairo_native::context"],[615,"cairo_native::debug"],[616,"cairo_native::docs"],[624,"cairo_native::error"],[929,"cairo_native::error::CompilerError"],[931,"cairo_native::error::SierraAssertError"],[932,"cairo_native::error::panic"],[1020,"cairo_native::execution_result"],[1329,"cairo_native::executor"],[1602,"cairo_native::metadata"],[1700,"cairo_native::metadata::auto_breakpoint"],[1885,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[1887,"cairo_native::metadata::debug_utils"],[1982,"cairo_native::metadata::drop_overrides"],[2065,"cairo_native::metadata::dup_overrides"],[2148,"cairo_native::metadata::enum_snapshot_variants"],[2232,"cairo_native::metadata::gas"],[2613,"cairo_native::metadata::gas::GasMetadataError"],[2614,"cairo_native::metadata::realloc_bindings"],[2699,"cairo_native::metadata::runtime_bindings"],[2799,"cairo_native::metadata::tail_recursion"],[2886,"cairo_native::module"],[2975,"cairo_native::starknet"],[4209,"cairo_native::starknet_stub"],[4509,"cairo_native::utils"],[4721,"cairo_native::utils::mem_tracing"],[4722,"dyn_clone::sealed"],[4723,"yansi::attr_quirk"],[4724,"yansi::paint"],[4725,"yansi::color"],[4726,"cairo_native::ffi"],[4727,"cairo_native::values"],[4728,"core::cmp"],[4729,"melior::context"],[4730,"melior::ir::module"],[4731,"cairo_lang_sierra::program"],[4732,"cairo_lang_sierra::extensions::core"],[4733,"cairo_lang_sierra::program_registry"],[4734,"melior::ir::attribute"],[4735,"core::result"],[4736,"serde::de"],[4737,"core::fmt"],[4738,"core::convert"],[4739,"starknet_types_core::felt"],[4740,"core::clone"],[4741,"alloc::vec"],[4742,"core::hash"],[4743,"alloc::boxed"],[4744,"cairo_lang_semantic::substitution"],[4745,"alloc::collections::vec_deque"],[4746,"core::option"],[4747,"cairo_lang_utils::ordered_hash_map"],[4748,"std::path"],[4749,"serde::ser"],[4750,"core::any"],[4751,"yansi::condition"],[4752,"cairo_native::executor::aot"],[4753,"alloc::sync"],[4754,"cairo_native::executor::jit"],[4755,"core::alloc::layout"],[4756,"melior::error"],[4757,"serde_json::error"],[4758,"libloading::error"],[4759,"std::io::error"],[4760,"cairo_lang_sierra::edit_state"],[4761,"core::num::error"],[4762,"cairo_lang_sierra::ids"],[4763,"core::error"],[4764,"smol_str"],[4765,"alloc::string"],[4766,"cairo_native::executor::contract"],[4767,"core::ffi"],[4768,"libloading::safe"],[4769,"cairo_lang_starknet_classes::contract_class"],[4770,"core::ops::function"],[4771,"melior::ir::block"],[4772,"melior::ir::location"],[4773,"melior::ir::value"],[4774,"melior::execution_engine"],[4775,"cairo_lang_sierra_ap_change"],[4776,"cairo_lang_sierra_gas"],[4777,"cairo_lang_sierra::extensions::modules::gas"],[4778,"alloc::collections::btree::map"],[4779,"melior::ir::operation"],[4780,"ark_ff::biginteger"],[4781,"num_bigint::biguint"],[4782,"anyhow"],[4783,"num_bigint::bigint"],[4784,"alloc::borrow"],[4785,"cairo_native::compiler"]],"i":"A`Ab001000000110`0000000000000`101010101010101010101010101010101010`1010101011`10`10`11010010`101011110000```1010101110000000000000001011011111110000000101010101010``````101010101010101010101010101010101010101011010101010100``1010101010101010`1010101010ABjABlABn2AC`2210ACb0Fn`0```000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`Gj00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Gh000000000000000000000000000000000000000000000000000000000000000000000000000000000000`H`0000000000000000000000000000000000000`0000000000000000000000000000000000000000000000000000`````````Hl0Hn1Bh`00Fb`13111111111111110113`111`1113213213213213213213213213213213213213213213213213213213213213213213213213213211332211111111111111321321321111111333333322222221321321321321321132132132132132132132132132132132132132132132132132132132132132`1321321321321321321132132132132132132132132132132132132132132ACd0ACf``In00000000000000000000000000000000000000000000000000000000000000000000000Jn1111111111111```K`KbKd210210221021021021021021021021021021021021021021021012221021021021020202102102021021021021021022102222111100000021021021021002102021022222221111111000000021021021021021021021021021021021021021021021021021021021021021021021021021021020222102102221021010210102102210210210210210210210210210210210210210210```KfHbGl210210210210210210210210210210210210210210210210210222210210210210210210221021021021021021021010210211111110000000222222210210210101010210221021021021021021021021021021021021021021021021021021021021021021021021021102102102102102221022102102102102102102102102102102102`Bb`0000000000000000000`00000```0000`0000000000000000000000000000000000000000000`0000`0`00000000000``M`0Ln010101010101010101010101010101010101010101010100101010101111110101010100110111111100000001010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010ACh0`Mf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ml000000000000000000000000000000000000000000000000000000000000000000000000000000000`Mn000000000000000000000000000000000000000000000000000000000000000000000000000000000`N`0000000000000000000000000000000000000000000000000000000000000000000000000000000000Ij0````0L`NbHd22103210321032103210321032103210321032103210321032103210321032103210321032102102102103210320210321032103210321322221111333321032103210332103330222221031210322222222211111110000000333333321032103210300210321032103221032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103321032103321032103210321032103210321032103210321032103ACj`Nn00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ob00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Of0000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Hf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```On```0`````````OjA@bA@dA@fA@hA@jA@lA@nAA`AAb525A@`Ol;:9876543210;:9876543210;:9876543210;:98765432985510;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:98765432`Kl2:9185021<;:9876543<;:9876543<;:9876543<;:9876543;:98765;:9876521<;:9876543:921<;:9876543;430221<;:987654321<;:9876543;:987654321<;:987654321<;:987654302:9;:9876543;;;;::::9999888877776666555544443333821<;:987654321<;:98765431<;:987654321<;:98765430202020221<;:9876543;:9876543;21<;:987654322222221111111<<<<<<<;;;;;;;:::::::999999988888887777777666666655555554444444333333321<;:987654321<;:98765434321<;:9876543020221<;:9876543;21<;:987654321<;:987654378574385821<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:9876543;:98765821<;:9876543121<;:987654321<;:987654321<;:98765430221<;:98765437821<;:987654302020202020202020202026;:987654302851020221<;:98765438<;:98765438521<;:987654321<;:9876543:921<;:987654321<;:9876543121<;:987654321<;:98765438521<;:987654321<;:987654321<;:987654321<;:9876543434321<;:9876543```AAfAAhAAj210210`210210210210210210210210210210210210210210210222102102102102102101`2022102102102102`2022102102102102222210210222222211111110000000210210210210221022102102102102102102102102102102102102102102102102102102102102102102102102102102210210222222222222222210210210210210`210210210210210210210210`````LdJd110101101010101010101010101010101010`10101010101`10``1101011010100000```10```1010010``101011111110000000101010`101010`11010101010101010101010101010101010101010`1110101010`1010`11010001010101010101010101010`","f":"`````````````````````````````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0222222222222222222`22{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{b{b{nc}}}f{}}0{bf}0{{{b{A`}}{b{A`}}}Ad}{{b{b{c}}}Ad{}}{{{b{Af}}{b{Ah}}{b{Aj}}{b{{B`{AlAn}}}}{b{nBb}}BdBf}{{Bj{fBh}}}}99`99`{{}A`}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ab}}}Bn}==`{Blf}0{{{b{A`}}{b{A`}}}Bf}{{{b{Ab}}{b{Ab}}}Bf}{{b{b{c}}}Bf{}}0000000```{{bl}{{j{{b{c}}}}}{}}0{{bC`}{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nCb}}}Cd}{{{b{Ab}}{b{nCb}}}Cd}{C`A`}{BlA`}{cc{}}{CfAb}1{ChAb}{CjAb}{{{Cl{c}}}Ab{{Cn{Ab}}}}{D`Ab}{DbAb}{{{b{{Dd{c}}}}}Ab{{Cn{Ab}}Df}}{C`Ab}{DhAb}{DjAb}{DlAb}{DnAb}{E`Ab}{{{Eb{c}}}Ab{{Cn{Ab}}}}{b{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}4312650{{}c{}}0::::::::::``{{{b{Ah}}A`}{{Fb{{Eb{C`}}}}}}``{{{b{{Dd{C`}}}}{b{Fd}}}{{Fb{f}}}}<<<<<<<<<<<<<<<<<<<<<<<<{{bC`}{{j{{b{c}}}}}{}}0========{{bC`C`C`}{{j{{b{c}}}}}{}}0>>>>{{{b{A`}}{b{A`}}}{{El{Ad}}}}??{{bFf}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000033{{{b{Ab}}c}BjFh}``11{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}055{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0`>>{{bFl}{{j{{b{c}}}}}{}}0888888`````````````````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{{Fn{c}}}}{b{nCb}}}Cd{G`GbGdGf}}{{{Gh{c}}}{{Fn{c}}}{G`GbGd}}{{{Gj{c}}}{{Fn{c}}}{G`GbGd}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99`999999999999999>9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{n{Gj{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Gl}}}}}{G`GbGd}}33{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gj{c}}}}{b{nCb}}}Cd{G`GbGd}}{cc{}}{{{b{{Gj{c}}}}{b{c}}}{{El{{Gn{Gl}}}}}{G`GbGd}}:{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{H`}}}{{Gj{c}}}{G`GbGd}}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}};;;;43;;;;;;;;;;{{{b{n{Gh{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Hb}}}}}{GbGdG`}}<{{{b{{Gh{c}}}}}{{b{H`}}}{GbGdG`}}={Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}?{Blf}5{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gh{c}}}}{b{nCb}}}Cd{GbGdG`}}{cc{}}{{{b{{Gh{c}}}}{b{c}}}{{El{{Gn{Hb}}}}}{GbGdG`}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{H`}}}{{Gh{c}}}{GbGdG`}}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<<<1<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{H`}}{b{Aj}}Bf{El{Hd}}}{{Bj{HfBh}}}}3{{{b{H`}}}{{b{Af}}}}4{{}H`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}{{{b{H`}}{b{H`}}}Bf}{{b{b{c}}}Bf{}}0008{{bC`}{{j{{b{c}}}}}{}}{{{b{H`}}{b{nCb}}}Cd}{cc{}}={{}Bl}{{}Af}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}H`}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999{{{b{Hh}}}{{b{Hj}}}}`````````````````````````````````````````````{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<555444<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00>>>{Blf}00333{{bC`}{{j{{b{c}}}}}{}}00{{{b{Bh}}{b{nCb}}}Cd}0{{{b{Hl}}{b{nCb}}}Cd}0{{{b{Hn}}{b{nCb}}}Cd}0{I`Bh}{IbBh}{IdBh}{IfBh}{IhBh}{IjBh}{IlBh}{cc{}}{HnBh}{InBh}{HlBh}{J`Bh}{{{Ef{Jb}}}Bh}{JdBh}66{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}65432103240156{{}c{}}00999999999999{{{b{Jf}}}Bh}:::::::::::::::::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}00;;;;;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}00<<<<<<`<<<{{bFf}{{j{{b{c}}}}}{}}00=========111{{{b{Bh}}}{{El{{b{Jh}}}}}}>>>{bJj}00{bJl}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00==={{bFl}{{j{{b{c}}}}}{}}00333333333`````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{In}}{b{nCb}}}Cd}0{cc{}};{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{JlIn}111111111111=1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{{Jn{b{Hj}}}{{Fb{c}}}{}}{bJj}{bJl}{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}9{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}<<<```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00`????????????555444???????????????????????????```???{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{b{b{nc}}}f{}}00{bf}00{{{b{K`}}{b{K`}}}Ad}{{{b{Kd}}{b{Kd}}}Ad}{{b{b{c}}}Ad{}}0{b{{j{{b{c}}}}}{}}00000{{}K`}{{}Kd}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00{c{{Bj{K`}}}Bn}{c{{Bj{Kb}}}Bn}{c{{Bj{Kd}}}Bn}777{Blf}00`{{{b{K`}}{b{K`}}}Bf}{{{b{Kb}}{b{Kb}}}Bf}{{{b{Kd}}{b{Kd}}}Bf}{{b{b{c}}}Bf{}}00000000000``{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nCb}}}Cd}{{{b{Kb}}{b{nCb}}}Cd}{{{b{Kd}}{b{nCb}}}Cd}{cc{}}00{Kb{{Bj{KdBh}}}}{b{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nc}}}fEd}{{{b{Kd}}{b{nc}}}fEd}{{}Bl}00{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}50124360634215{{}c{}}00;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00======{{{b{K`}}{b{K`}}}{{El{Ad}}}}{{{b{Kd}}{b{Kd}}}{{El{Ad}}}}``???{{bFf}{{j{{b{c}}}}}{}}00``{b{{j{{b{c}}}}}{}}00000``000``444`{{{b{K`}}c}BjFh}{{{b{Kb}}c}BjFh}{{{b{Kd}}c}BjFh}333{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00777{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00???{{bFl}{{j{{b{c}}}}}{}}00:::::::::```{{bd}f}{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00============555444=============================={{{b{Kf}}}Kf}{{b{b{nc}}}f{}}{bf}{b{{j{{b{c}}}}}{}}00000{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00222{Blf}00{{{b{nKf}}}f}888{{{b{Hb}}{b{Kh}}}Kj}{{{b{Gl}}{b{Kh}}}{{Bj{KjBh}}}}{{{b{Kf}}{b{Kh}}Bf}{{Bj{KjBh}}}}{{{b{Hb}}{b{Hj}}}{{El{Kj}}}}{{{b{Gl}}{b{Hj}}}{{El{Kj}}}}{{{b{Kf}}{b{Hj}}}{{El{Kj}}}}{{bC`}{{j{{b{c}}}}}{}}00{{{b{Hb}}{b{nCb}}}Cd}{{{b{Gl}}{b{nCb}}}Cd}{{{b{Kf}}{b{nCb}}}Cd}{cc{}}00{{HfA`}{{Bj{HbBh}}}}{{HfA`}{{Bj{GlBh}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}32106450321564{{}c{}}00999{{{b{Hb}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}??????{{{b{Fd}}}{{Bj{KfBh}}}}{b{{j{{b{c}}}}}{}}00000{{{b{Hb}}}{{b{Ah}}}}{{Kn{B`{AlAn}}L`}Gl}{{{b{Aj}}{b{Lb}}A`}{{Bj{KfBh}}}}333333333333333333333333333333333333{{bC`}{{j{{b{c}}}}}{}}00444444444444{{bC`C`C`}{{j{{b{c}}}}}{}}00555555555{{{b{Hb}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}00777777777222{{{b{Kf}}D`{b{{Dd{D`}}}}Dl{El{Ld}}c}{{Bj{KdBh}}}Kl}{{{b{nKf}}c}{{Bj{fBh}}}{{Lf{Fd}}}}999{bc{}}{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00==={b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000`{{bh}{{j{{b{c}}}}}{}}`{{bl}{{j{{b{c}}}}}{}}222265222222222222`{{}Bb}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}```4{{bC`}{{j{{b{c}}}}}{}}{{{b{Bb}}{b{nCb}}}Cd}{cc{}}`{{{b{Bb}}}{{El{{b{c}}}}}Lh}{{{b{nBb}}}{{El{{b{nc}}}}}Lh}{{{b{nBb}}e}{{b{nc}}}Lh{{Ll{}{{Lj{c}}}}}}<{{}Bl}{{{b{nBb}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}Bb}111111111111{{bC`}{{j{{b{c}}}}}{}}2222{{bC`C`C`}{{j{{b{c}}}}}{}}333{{bFf}{{j{{b{c}}}}}{}}4`4{{{b{nBb}}}{{El{c}}}Lh}52`5`{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}8{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}};{{bFl}{{j{{b{c}}}}}{}};;;```{{bd}f}0{{{b{nLn}}M`}f}{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0????????6655????????????????????{{{b{M`}}}M`}{{{b{Ln}}}Ln}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}000{{}Ln}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}033{Blf}0{{{b{M`}}{b{M`}}}Bf}{{b{b{c}}}Bf{}}000;;{{bC`}{{j{{b{c}}}}}{}}0{{{b{M`}}{b{nCb}}}Cd}{{{b{Ln}}{b{nCb}}}Cd}{cc{}}0::{{{b{Ln}}{b{M`}}}Bf}{{{b{M`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}4123056{{}c{}}0{b{{j{{b{c}}}}}{}}000000000{{{b{Ln}}{b{Mb}}Md{b{Bb}}{b{M`}}}{{Bj{fBh}}}}111111111111111111111111{{bC`}{{j{{b{c}}}}}{}}022222222{{bC`C`C`}{{j{{b{c}}}}}{}}0333333{{bFf}{{j{{b{c}}}}}{}}04444441144{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}088{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0;;{{bFl}{{j{{b{c}}}}}{}}0;;;;;;```{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}====43{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{f}}}}>>>>>>>>>>>>{{{b{Mf}}{b{Mb}}Md}{{Fb{f}}}}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}{b{Hj}}Md}{{Fb{f}}}}{{}Mf}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{b{{j{{b{c}}}}}{}}{Blf}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhBlMd}{{Fb{f}}}}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Mf}}{b{nCb}}}Cd}{cc{}}5{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}>>>>>>>>>>>>>>>>>;>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{f}}}}000000{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0{{{b{Mf}}{b{Mj}}}f}141{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}4{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999943999999999999{{}Ml}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Ml}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}222254222222222222{{}Mn}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Mn}}{b{nCb}}}Cd}{cc{}}9{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000000000000000<0000{{bC`C`C`}{{j{{b{c}}}}}{}}111{{bFf}{{j{{b{c}}}}}{}}22212{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}5{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}888`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{{}N`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}={Blf}4{{bC`}{{j{{b{c}}}}}{}}{cc{}}{{{b{N`}}{b{Jf}}}{{El{{b{{Eb{Jf}}}}}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1{{{b{nN`}}{b{Jf}}{b{{Dd{Jf}}}}}f}<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00```````{{bd}f}00`{{bh}{{j{{b{c}}}}}{}}000{{bl}{{j{{b{c}}}}}{}}0003333333333333333666655553333333333333333333333333333333333333333{{{b{L`}}}L`}{{{b{Nb}}}Nb}{{{b{Hd}}}Hd}{{b{b{nc}}}f{}}00{bf}0088888888{{}L`}{{}Hd}{Bl{{b{c}}}{}}000{Bl{{b{nc}}}{}}000<<<<{Blf}000{{{b{L`}}{b{L`}}}Bf}{{{b{Nb}}{b{Nb}}}Bf}{{{b{Ij}}{b{Ij}}}Bf}{{b{b{c}}}Bf{}}00000000000>>>>{{bC`}{{j{{b{c}}}}}{}}000{{{b{L`}}{b{nCb}}}Cd}{{{b{Nb}}{b{nCb}}}Cd}{{{b{Hd}}{b{nCb}}}Cd}{{{b{Ij}}{b{nCb}}}Cd}0{cc{}}00{NdIj}{NfIj}2``{{{b{L`}}NhNj}{{El{Dl}}}}{{{b{L`}}Nh}{{Eb{{F`{DlNj}}}}}}{{{b{L`}}{b{Kh}}{El{Dl}}}{{Bj{DlIj}}}}{b{{j{{b{c}}}}}{}}000{{{b{Nb}}{b{nc}}}fEd}{{}Bl}000{{{b{L`}}{b{Kh}}}{{El{Dl}}}}{{{b{L`}}}{{Fb{{Nl{Dl{Nl{DlDl}}}}}}}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}156042315602431436052{{}c{}}000<<<<<<<<``<<<<<<<<<<<<{{{b{Aj}}{El{Hd}}}{{Bj{L`Ij}}}}================================================{{bC`}{{j{{b{c}}}}}{}}000>>>>>>>>>>>>>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}000????????????{{bFf}{{j{{b{c}}}}}{}}000{b{{j{{b{c}}}}}{}}000000000002222{{{b{Ij}}}{{El{{b{Jh}}}}}}1111{bc{}}00{bJj}{bJl}{c{{Bj{e}}}{}{}}000{{}{{Bj{c}}}{}}000{bFj}0007777{b{{b{c}}}{}}000{{{b{n}}}{{b{nc}}}{}}000>>>>{{bFl}{{j{{b{c}}}}}{}}000::::::::::::``{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}<<<<43<<<<<<<<<<<<{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}>{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Nn}}{b{nCb}}}Cd}{{{b{Af}}MhMd}{{Bj{O`Ib}}}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{Af}}{b{Ah}}}Nn}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Af}}MhMhMd}{{Bj{O`Ib}}}}==2={c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{{}Ob}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Mh{El{Mh}}Md}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}1{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Mh}}}}={Blf}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Ob}}{b{nCb}}}Cd}{cc{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Od}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}0{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}2100==============={{bC`}{{j{{b{c}}}}}{}}>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0020{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}3{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MdMhMhMh}{{Fb{Od}}}}>{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999954999999999999{{{b{Of}}}Mh}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Of}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{Mh{b{Mb}}}Of}::::::::::::=::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Of}}}Oh}=={{{b{Of}}}{{El{Oh}}}}3{{{b{nOf}}{b{Mb}}}f}?{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Hf}}{b{nCb}}}Cd}{cc{}}{{{b{Hf}}}{{El{{b{c}}}}}Lh}<{{}Bl}{{{b{nHf}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{Hf}}}{{b{Bb}}}}{{{b{Hf}}}{{b{Ah}}}}{{Ah{B`{AlAn}}Bb}Hf}333333333333{{bC`}{{j{{b{c}}}}}{}}4444{{bC`C`C`}{{j{{b{c}}}}}{}}555{{{b{Hf}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}77{{{b{nHf}}}{{El{c}}}Lh}838{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj};{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}>{{bFl}{{j{{b{c}}}}}{}}>>>`````````````````{{bd}f}000000000```{{bh}{{j{{b{c}}}}}{}}00000000000{{bl}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000````000000000000000000000000666666666666555555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{n{Ol{Oj}}}}{b{Oj}}{b{{Ol{Oj}}}}}f}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}`````{{{b{nKl}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}444444444444{{{b{Oj}}}Oj}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{b{b{nc}}}f{}}000000000{bf}000000000{{{b{A@b}}{b{A@b}}}Ad}{{{b{A@d}}{b{A@d}}}Ad}{{{b{A@f}}{b{A@f}}}Ad}{{{b{A@h}}{b{A@h}}}Ad}{{{b{A@j}}{b{A@j}}}Ad}{{{b{A@l}}{b{A@l}}}Ad}{{{b{A@n}}{b{A@n}}}Ad}{{b{b{c}}}Ad{}}000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{}A@b}{{}AA`}{{}AAb}{{{b{nKl}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00000000000{Bl{{b{nc}}}{}}00000000000{c{{Bj{A@b}}}Bn}{c{{Bj{A@d}}}Bn}{c{{Bj{A@f}}}Bn}{c{{Bj{A@h}}}Bn}{c{{Bj{A@j}}}Bn}{c{{Bj{A@l}}}Bn}{c{{Bj{A@n}}}Bn}{c{{Bj{AA`}}}Bn}{c{{Bj{AAb}}}Bn}{b{{j{{b{c}}}}}{}}00000000000{Blf}00000000000{{{b{nKl}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}``{{{b{A@b}}{b{A@b}}}Bf}{{{b{A@d}}{b{A@d}}}Bf}{{{b{A@f}}{b{A@f}}}Bf}{{{b{A@h}}{b{A@h}}}Bf}{{{b{A@j}}{b{A@j}}}Bf}{{{b{A@l}}{b{A@l}}}Bf}{{{b{A@n}}{b{A@n}}}Bf}{{{b{AA`}}{b{AA`}}}Bf}{{{b{AAb}}{b{AAb}}}Bf}{{b{b{c}}}Bf{}}00000000000000000000000000000000000`{{bl}{{j{{b{c}}}}}{}}00000000000{{bC`}{{j{{b{c}}}}}{}}00000000000{{{b{{Ol{c}}}}{b{nCb}}}CdGf}{{{b{Oj}}{b{nCb}}}Cd}{{{b{A@b}}{b{nCb}}}Cd}{{{b{A@d}}{b{nCb}}}Cd}{{{b{A@f}}{b{nCb}}}Cd}{{{b{A@h}}{b{nCb}}}Cd}{{{b{A@j}}{b{nCb}}}Cd}{{{b{A@l}}{b{nCb}}}Cd}{{{b{A@n}}{b{nCb}}}Cd}{{{b{AA`}}{b{nCb}}}Cd}{{{b{AAb}}{b{nCb}}}Cd}{cc{}}00000000000{{{b{nKl}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nKl}}D`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}{b{nDl}}}{{On{A@d}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@d}}}}{{{b{nKl}}{b{nDl}}}{{On{A@f}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00000000000{{{b{A@b}}{b{nc}}}fEd}{{{b{A@d}}{b{nc}}}fEd}{{{b{A@f}}{b{nc}}}fEd}{{{b{A@h}}{b{nc}}}fEd}{{{b{A@j}}{b{nc}}}fEd}{{{b{A@l}}{b{nc}}}fEd}{{{b{A@n}}{b{nc}}}fEd}{{{b{AA`}}{b{nc}}}fEd}{{{b{AAb}}{b{nc}}}fEd}`{{}Bl}00000000000{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}12436502561304016453212650345124306305162440561236320541150634251634203654210{{}c{}}00000000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{{b{nKl}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nA@`}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}444444444444`444444444444444444444444````{{E`E`E`E`Bf}AA`}{{E`E`E`E`Bf}AAb}```666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666{{bC`}{{j{{b{c}}}}}{}}00000000000777777777777777777777777777777777777777777777777{{bC`C`C`}{{j{{b{c}}}}}{}}00000000000888888888888888888888888{{{b{A@b}}{b{A@b}}}{{El{Ad}}}}{{{b{A@d}}{b{A@d}}}{{El{Ad}}}}{{{b{A@f}}{b{A@f}}}{{El{Ad}}}}{{{b{A@h}}{b{A@h}}}{{El{Ad}}}}{{{b{A@j}}{b{A@j}}}{{El{Ad}}}}{{{b{A@l}}{b{A@l}}}{{El{Ad}}}}{{{b{A@n}}{b{A@n}}}{{El{Ad}}}}`????????????`{{bFf}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000{{{b{nKl}}D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{f}}}}222222222222``;;;;;;;;;;;;{{{b{nKl}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}`{{{b{A@b}}c}BjFh}{{{b{A@d}}c}BjFh}{{{b{A@f}}c}BjFh}{{{b{A@h}}c}BjFh}{{{b{A@j}}c}BjFh}{{{b{A@l}}c}BjFh}{{{b{A@n}}c}BjFh}{{{b{AA`}}c}BjFh}{{{b{AAb}}c}BjFh}{{{b{nKl}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}```{{{b{nKl}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}DjD`D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00000000000`{bc{}}000000000``{c{{Bj{e}}}{}{}}00000000000{{}{{Bj{c}}}{}}00000000000``{bFj}00000000000444444444444`{b{{b{c}}}{}}00000000000{{{b{n}}}{{b{nc}}}{}}00000000000``{{}c{}}00000000000{{bFl}{{j{{b{c}}}}}{}}00000000000888888888888888888888888````888888888888```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00{AAdA@b}<<<<<<<<<<<<777666<<<<<<<<<<<<<<<<<<<<<<<<<<<{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}>>>{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{b{b{nc}}}f{}}00{bf}00{b{{j{{b{c}}}}}{}}00000`{{{b{{Dd{D`}}}}}Jl}{{}AAf}{{}AAj}{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00666{Blf}00{{{b{n{b{nAAf}}}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{Hj}}}{{Eb{D`}}}}```{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{AAf}}{b{nCb}}}Cd}{{{b{AAh}}{b{nCb}}}Cd}{{{b{AAj}}{b{nCb}}}Cd}{cc{}}00{{{b{n{b{nAAf}}}}Dl{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@d}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}32416052341605{{}c{}}00999999{{{b{n{b{nAAf}}}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}``{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}};;;`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00========={{bFf}{{j{{b{c}}}}}{}}00>>>>>>{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{f}}}}???222{{{b{n{b{nAAf}}}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{n{b{nAAf}}}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}`{{{b{n{b{nAAf}}}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{A@bAAl}555{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00999999999`````{{bd}f}0`{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0`<<<<<<<<6655<<<<<<<<<<<<<<<<<<{{{b{Fd}}}{{AAn{{Gn{Aj}}}}}}=={{{b{Ld}}}Ld}{{{b{Jd}}}Jd}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}0`{{{b{Ah}}{b{Bb}}A`}Mj}11{c{{`{Gf}}}{{AB`{{b{nCb}}}{{Lj{Cd}}}}}}{{{b{{Dd{C`}}}}}Jl}{{}Ld}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ld}}}Bn}77{Blf}0`{{{b{Jd}}{b{Jd}}}Bf}{{b{b{c}}}Bf{}}000{cD`{{Cn{ABb}}}}{{{b{Hj}}}D`}0{{bl}{{j{{b{c}}}}}{}}0{{{b{Aj}}{b{Hj}}}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}Bl}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}{b{Hj}}}{{El{{b{Kh}}}}}}{{bC`}{{j{{b{c}}}}}{}}0{{{b{Ld}}{b{nCb}}}Cd}{{{b{Jd}}{b{nCb}}}Cd}0{cc{}}0{{{b{Kh}}Bf}{{ABf{Hj}}}}{DjABh}{b{{j{{b{c}}}}}{}}0{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}3012456{{}c{}}09999{{{b{ABh}}Bl}{{Bj{{F`{ABhBl}}Jd}}}}::::::``::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}0;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}0<<<<{{{b{ABh}}Bl}Bl}``=={{bFf}{{j{{b{c}}}}}{}}0>>>>{{{b{Mj}}}f}??33{{{b{Af}}{b{nAh}}}{{Bj{fIb}}}}{{{b{Ld}}c}BjFh}{b{{j{{b{c}}}}}{}}0{bc{}}0{bJj}{bJl}{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}066{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0{{}c{}}0{{bFl}{{j{{b{c}}}}}{}}0::::::{{}f}","D":"L@nKKj","p":[[1,"reference"],[5,"Private",4722],[1,"unit"],[6,"Attribute",4723],[5,"Painted",4724],[6,"Color",4725],[0,"mut"],[6,"OptLevel",0,4726],[6,"Value",0,4727],[6,"Ordering",4728],[5,"Context",4729],[5,"Module",4730],[5,"Program",4731],[6,"CoreType",4732],[6,"CoreLibfunc",4732],[5,"ProgramRegistry",4733],[5,"MetadataStorage",1602],[5,"Attribute",4734],[1,"bool"],[6,"Error",624],[6,"Result",4735],[1,"usize"],[10,"Deserializer",4736],[1,"u8"],[5,"Formatter",4737],[8,"Result",4737],[1,"i128"],[1,"i16"],[1,"i8"],[1,"array"],[10,"Into",4738],[5,"Felt",4739],[1,"i32"],[1,"slice"],[10,"Clone",4740],[1,"u16"],[1,"u32"],[1,"u64"],[1,"i64"],[1,"u128"],[5,"Vec",4741],[10,"Hasher",4742],[5,"Box",4743],[6,"RewriteResult",4744],[5,"VecDeque",4745],[6,"Option",4746],[5,"OrderedHashMap",4747],[1,"tuple"],[8,"Result",624],[5,"Path",4748],[6,"Quirk",4723],[10,"Serializer",4749],[5,"TypeId",4750],[5,"Condition",4751],[6,"ProgramCache",262],[10,"PartialEq",4728],[10,"Eq",4728],[10,"Hash",4742],[10,"Debug",4737],[5,"JitProgramCache",437],[5,"AotProgramCache",352],[5,"AotNativeExecutor",1329,4752],[5,"Arc",4753],[5,"NativeContext",523],[5,"JitNativeExecutor",1329,4754],[5,"MetadataComputationConfig",2232],[5,"NativeModule",2886],[6,"CoreConcreteLibfunc",4732],[1,"str"],[6,"SierraAssertError",624],[6,"CompilerError",624],[5,"LayoutError",4755],[6,"Error",4756],[5,"Error",4757],[6,"Error",4758],[5,"Error",4759],[6,"GasMetadataError",2232],[6,"EditStateError",4760],[5,"NativeAssertError",932],[5,"TryFromIntError",4761],[6,"ProgramRegistryError",4733],[5,"LayoutError",4509],[5,"ConcreteTypeId",4762],[10,"Error",4763],[5,"SmolStr",4764],[5,"String",4765],[10,"ToNativeAssertError",932],[5,"BuiltinStats",1020],[5,"ExecutionResult",1020],[5,"ContractExecutionResult",1020],[5,"AotContractExecutor",1329,4766],[5,"FunctionId",4762],[6,"c_void",4767],[10,"StarknetSyscallHandler",2975],[5,"Library",4768],[5,"GasMetadata",2232],[5,"ContractEntryPoints",4769],[5,"BuiltinCosts",4509],[10,"AsRef",4738],[10,"Any",4750],[17,"Output"],[10,"FnOnce",4770],[5,"AutoBreakpoint",1700],[6,"BreakpointEvent",1700],[5,"Block",4771],[5,"Location",4772],[5,"DebugUtils",1887],[5,"Value",4773],[5,"ExecutionEngine",4774],[5,"DropOverridesMeta",1982],[5,"DupOverridesMeta",2065],[5,"EnumSnapshotVariantsMeta",2148],[5,"GasCost",2232],[6,"ApChangeError",4775],[6,"CostError",4776],[5,"StatementIdx",4731],[6,"CostTokenType",4777],[5,"BTreeMap",4778],[5,"ReallocBindingsMeta",2614],[5,"Operation",4779],[5,"RuntimeBindingsMeta",2699],[5,"OperationRef",4779],[5,"TailRecursionMeta",2799],[5,"BlockRef",4771],[5,"Felt252Abi",2975],[5,"ArrayAbi",2975],[8,"SyscallResult",2975],[5,"DummySyscallHandler",2975],[5,"U256",2975],[5,"ExecutionInfo",2975],[5,"ExecutionInfoV2",2975],[5,"TxV2Info",2975],[5,"ResourceBounds",2975],[5,"BlockInfo",2975],[5,"TxInfo",2975],[5,"Secp256k1Point",2975],[5,"Secp256r1Point",2975],[5,"BigInt",4780],[5,"StubSyscallHandler",4209],[5,"StubEvent",4209],[5,"ContractLogs",4209],[5,"BigUint",4781],[8,"Result",4782],[10,"Fn",4770],[5,"BigInt",4783],[5,"GenFunction",4731],[6,"Cow",4784],[5,"Layout",4755],[15,"Struct",251],[15,"Enum",251],[15,"Felt252Dict",251],[15,"BoundedInt",251],[15,"IntRange",251],[15,"BoundedIntOutOfRange",929],[15,"Range",931],[15,"EnumInit",1885],[15,"NotEnoughGas",2613]],"r":[[14,4726],[28,4727],[76,4785],[164,4726],[167,4726],[263,352],[265,437],[1329,4766],[1330,4752],[1331,4754]],"b":[[113,"impl-From%3Cu8%3E-for-OptLevel"],[114,"impl-From%3Cusize%3E-for-OptLevel"],[116,"impl-From%3Ci128%3E-for-Value"],[118,"impl-From%3Ci16%3E-for-Value"],[119,"impl-From%3Ci8%3E-for-Value"],[120,"impl-From%3C%5BT;+N%5D%3E-for-Value"],[121,"impl-From%3CFelt%3E-for-Value"],[122,"impl-From%3Ci32%3E-for-Value"],[123,"impl-From%3C%26%5BT%5D%3E-for-Value"],[124,"impl-From%3Cu8%3E-for-Value"],[125,"impl-From%3Cu16%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu64%3E-for-Value"],[128,"impl-From%3Ci64%3E-for-Value"],[129,"impl-From%3Cu128%3E-for-Value"],[130,"impl-From%3CVec%3CT%3E%3E-for-Value"],[295,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[296,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[739,"impl-Display-for-Error"],[740,"impl-Debug-for-Error"],[741,"impl-Display-for-SierraAssertError"],[742,"impl-Debug-for-SierraAssertError"],[743,"impl-Debug-for-CompilerError"],[744,"impl-Display-for-CompilerError"],[745,"impl-From%3CLayoutError%3E-for-Error"],[746,"impl-From%3CError%3E-for-Error"],[747,"impl-From%3CError%3E-for-Error"],[748,"impl-From%3CError%3E-for-Error"],[749,"impl-From%3CError%3E-for-Error"],[750,"impl-From%3CGasMetadataError%3E-for-Error"],[751,"impl-From%3CEditStateError%3E-for-Error"],[753,"impl-From%3CCompilerError%3E-for-Error"],[754,"impl-From%3CNativeAssertError%3E-for-Error"],[755,"impl-From%3CSierraAssertError%3E-for-Error"],[756,"impl-From%3CTryFromIntError%3E-for-Error"],[757,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[758,"impl-From%3CLayoutError%3E-for-Error"],[960,"impl-Debug-for-NativeAssertError"],[961,"impl-Display-for-NativeAssertError"],[2376,"impl-Display-for-GasMetadataError"],[2377,"impl-Debug-for-GasMetadataError"],[2381,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[2382,"impl-From%3CCostError%3E-for-GasMetadataError"],[4596,"impl-Display-for-LayoutError"],[4597,"impl-Debug-for-LayoutError"]],"c":"OzAAAAEAAC8AFwBDAAEAHgEAAHMBAADIAQAAHgIAAMkCAgC4AwAAOgQCAGkFAgBWBgAAzQYBAHMHAADRBwAAJAgAAHcIAAAICQMASQoAAJ4KAAACCwAAWQsAAJcMCwCuEAIAyhEBAA==","e":"OzAAAAEAAI4GHwEBAAAAAwAKABAADAAeAAEALAADAEIAAABFAAcAUAAAAFMABgBdAAsAagAAAHAAAwB1AAAAdwAMAIYAEACkAAAA0QAAAN4AAADjAAcA7QADAPIAAQD8ABAAEwEBACEBAQAkAQAAJwECACwBBwA3AQAAVgECAFoBAgBhAQAAaAEBAHQBAAB3AQEAegEAAH0BAAB/AQAAgQEHAI8BAACrAQIArwECAL0BAQDJAQAAywEAAM0BAQDQAQAA0wEAANUBAADXAQcA5QEAAAECAgAFAgIAEwIBACECAAAjAgIAJwIFAC8CAAAyAgAANAIGAEECAABdAgIAYQICAGgCAABxAgcAegIQAIwCCQCoAgUA0gIFANsCAgDkAgwA8gIFAP0CFwAkAwAAdwMAAHsDDgCNAwgAogMCAK0DAQC7AwEAvgMAAMEDAQDFAwcA0wMAAO8DBQD2AwIA/QMAAAAEAgAJBAAAFgQFADcEAgA9BAwAUAQKAF4EFAB5BAIAgwQZAOsEAwD1BAEA/QQBAAIFAQAHBQMADgULAB0FCAAzBQAANQUAAEgFBQBsBQIAdQUFAH4FAwCFBQUAjgUCAJQFAACZBRcAtwUBALoFAAC8BQAAygUBAAwGAAAhBgkALgYIAEUGAABLBgEAWgYCAF4GAABhBgAAZAYAAGYGAABpBgAAawYAAG0GBgCaBgIAngYCAKUGBQC3BgMAzwYFANkGBADgBgYA6wYBAPEGEQAPBwAARgcHAFAHBQBeBwIAZwcCAHYHAAB4BwIAfAcAAIAHAACDBwcApgcGALAHAAC0BwIAuAcCAL8HAADGBwEA1AcCANgHAADbBwAA3gcHAAcIAgALCAIAEggAABkIAQAnCAIAKwgAAC4IAAAxCAcAWggCAF4IAgBlCAAAbAgBAHoIAgB+CAAAgggAAIQIBwCsCAAArggCALIIAgC5CAIAvwgEANwIBwAMCQgAHQkJACsJEgBGCQQATgkBAFEJAwBaCSIAiQkBAJcJAAAACgAABQoQABoKCwA2CgAAPgoBAEwKAQBPCgAAUgoAAFYKBwCBCgIAhQoCAJMKAQChCgIAqwoAAK4KAACwCgAAsgoHAMMKAADkCgIA6AoBAOsKAAD3CgEABgsBAAkLAAAMCwAADwsHADwLAgBACwIATgsBAFwLAQBfCwAAYgsAAGYLAABoCwYAdQsCAI0LAACVCwIAmQsCAKALAgCkCwEAqAsHALELDADuCwMACgwXAI8MBwCjDCsA2wwBAOkMJQAbDT0AcQ0KAIgNBwCcDWkAHg4BACwOAwA8DgAAVQ4IAE4PBwBiDwAAhw8BAJUPAQCjDygA2A8yABcQJgBiEAMAchAAAHUQAgB+EAAAixAFAKwQAQCxEAgAwBAKAM4QBwDcEAIA4hADAOkQFwAKEQMAEREAAGARAABnEQ4AeREMAIkRCACeEQIAohEDAKoRAACzEQMAzBEFANQRAADaEQUA4hEHAPQRAgD9EQ8AGhIBAEUSAQBPEgAAVBIBAFgSCQBkEgUAchIAAA=="}],["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","output_library","output_mlir","path","primary","","quirk","","rapid_blink","","red","","replace_ids","resetting","","rgb","","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_compile"],[190,"dyn_clone::sealed"],[191,"yansi::attr_quirk"],[192,"yansi::paint"],[193,"clap_builder::builder::command"],[194,"yansi::color"],[195,"core::fmt"],[196,"clap_builder::parser::matches::arg_matches"],[197,"clap_builder"],[198,"core::result"],[199,"clap_builder::util::id"],[200,"core::option"],[201,"cairo_lang_utils::ordered_hash_map"],[202,"cairo_lang_semantic::substitution"],[203,"alloc::vec"],[204,"alloc::collections::vec_deque"],[205,"alloc::boxed"],[206,"anyhow"],[207,"clap_builder::builder::possible_value"],[208,"core::any"],[209,"yansi::condition"]],"i":"Ab`0`0Al1000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`10101010101010101010101010101010101010101000001010101001010010111010101010100011010101010","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}4306215{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333````33{{bCf}{{j{{b{c}}}}}{}}04444`4411`44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????","D":"A@d","p":[[1,"reference"],[5,"Private",190],[1,"unit"],[6,"Attribute",191],[5,"Painted",192],[5,"Command",193],[6,"Color",194],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",195],[8,"Result",195],[5,"Args",0],[5,"ArgMatches",196],[8,"Error",197],[6,"Result",198],[5,"Id",199],[6,"Option",200],[5,"OrderedHashMap",201],[6,"RewriteResult",202],[5,"Vec",203],[5,"VecDeque",204],[5,"Box",205],[1,"tuple"],[8,"Result",206],[6,"Quirk",191],[5,"PossibleValue",207],[5,"TypeId",208],[1,"slice"],[5,"Condition",209]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADwADQAAAAEAAwACAAkAAQAVAAMALQAEADYAAwA8AAEAQgABAEYAAQBKABAAZQAAAKQABwCuAAgA"}],["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","input","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","load_program","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","parse_input","parse_output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","starknet","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_dump"],[192,"dyn_clone::sealed"],[193,"yansi::attr_quirk"],[194,"yansi::paint"],[195,"clap_builder::builder::command"],[196,"yansi::color"],[197,"core::fmt"],[198,"clap_builder::parser::matches::arg_matches"],[199,"clap_builder"],[200,"core::result"],[201,"clap_builder::util::id"],[202,"core::option"],[203,"cairo_lang_semantic::substitution"],[204,"alloc::vec"],[205,"alloc::collections::vec_deque"],[206,"cairo_lang_utils::ordered_hash_map"],[207,"alloc::boxed"],[208,"std::path"],[209,"cairo_lang_sierra::program"],[210,"core::error"],[211,"alloc::string"],[212,"core::any"],[213,"yansi::condition"]],"i":"``Ad0Ab1010001010101010101010101010101010101010101010001010101010101010101000100100000000111111101010101`01`0101010101010101010101010101010101010101010``01010101010100101010101010101000101010101","f":"````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}07777{Af{{b{c}}}{}}0{Af{{b{A`c}}}{}}099{Aff}0;;{{bAh}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Aj}}}Al}{{{b{Ad}}{b{A`Aj}}}Al}{cc{}}0{{{b{An}}}{{Bb{AbB`}}}}{{{b{A`An}}}{{Bb{AbB`}}}}{b{{j{{b{c}}}}}{}}0{{}{{Bf{Bd}}}}{{}Af}0`{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Bj{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bn{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{c}}}}}{{Bb{Bhe}}}{}{}}4635210{{}c{}}0::::::{{{b{Cd}}Cf}{{Bb{Ch{Cb{Cj}}}}}};;{{}{{Bb{f{Cb{Cj}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<{{bAh}{{j{{b{c}}}}}{}}0========{{bAhAhAh}{{j{{b{c}}}}}{}}0>>>>`{{{b{Cl}}}{{Bb{CnD`}}}}{{{b{Cl}}}{{Bb{AdD`}}}}{b{{j{{b{c}}}}}{}}0{{bDb}{{j{{b{c}}}}}{}}011111144`11{bc{}}0{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bDd}055{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Ab}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Ab}}{b{A`An}}}{{Bb{fB`}}}}{{}c{}}0{{bDf}{{j{{b{c}}}}}{}}0;;;;;;","D":"Of","p":[[1,"reference"],[5,"Private",192],[1,"unit"],[6,"Attribute",193],[5,"Painted",194],[5,"Command",195],[6,"Color",196],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[1,"u8"],[5,"Formatter",197],[8,"Result",197],[5,"ArgMatches",198],[8,"Error",199],[6,"Result",200],[5,"Id",201],[6,"Option",202],[6,"RewriteResult",203],[5,"Vec",204],[5,"VecDeque",205],[1,"tuple"],[5,"OrderedHashMap",206],[5,"Box",207],[5,"Path",208],[1,"bool"],[5,"Program",209],[10,"Error",210],[1,"str"],[5,"PathBuf",208],[5,"String",211],[6,"Quirk",193],[5,"TypeId",212],[5,"Condition",213]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAAEUADgAAAAYACQABABUAAwAtAAcAOQADAD8AAQBFAAEASQABAE0AEQBnAAAAagAAAJUAAgCnAAcAsQAHAA=="}],["cairo_native_run",{"t":"PFPGNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNCNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","available_gas","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","path","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","run_mode","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_run"],[190,"cairo_native_run::utils"],[369,"cairo_native_run::utils::test"],[624,"dyn_clone::sealed"],[625,"yansi::attr_quirk"],[626,"yansi::paint"],[627,"clap_builder::builder::command"],[628,"yansi::color"],[629,"core::fmt"],[630,"clap_builder::parser::matches::arg_matches"],[631,"clap_builder"],[632,"core::result"],[633,"clap_builder::util::id"],[634,"core::option"],[635,"alloc::vec"],[636,"cairo_lang_semantic::substitution"],[637,"alloc::collections::vec_deque"],[638,"alloc::boxed"],[639,"cairo_lang_utils::ordered_hash_map"],[640,"anyhow"],[641,"clap_builder::builder::possible_value"],[642,"core::any"],[643,"yansi::condition"],[644,"cairo_lang_sierra::program"],[645,"starknet_types_core::felt"],[646,"alloc::vec::into_iter"],[647,"alloc::string"],[648,"cairo_native::values"],[649,"cairo_native::execution_result"],[650,"cairo_lang_runner"],[651,"cairo_lang_test_plugin"],[652,"scarb_metadata"],[653,"cairo_lang_test_plugin::test_config"],[654,"cairo_lang_sierra::ids"],[655,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ab`0`0Al10000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`1010101010101010101010101010101010101010100010101010101000101110101010101000`11010101010D`0``0Ff1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fh0```EdFj2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0`{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}3460125{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333``33{{bCf}{{j{{b{c}}}}}{}}044444411``44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}`{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000998800000000000000000000{{{b{D`}}}D`}{{b{b{A`c}}}f{}}{bf}3333{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}055{Adf}077{{{b{Db}}{b{Dd}}}{{Cd{{b{Df}}}}}}{{bAf}{{j{{b{c}}}}}{}}0{{{b{D`}}{b{A`Ah}}}Aj}{{{Dj{Dh}}}Dl}{cc{}}0;;{{}Ad}0{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}5210346{{}c{}}0{b{{j{{b{c}}}}}{}}000{{{b{Dn}}}{{Bh{Dh}}}}111111111111111111111111111111>>11111111{{bAfAfAf}{{j{{b{c}}}}}{}}02222`22{{bCf}{{j{{b{c}}}}}{}}0333333{{{b{E`}}}{{Cd{Eb}}}}22`44`{bc{}}{{{b{D`}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Cl{D`}}}}}}=={{bCn}{{j{{b{c}}}}}{}}0======`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{b{c}}}{}}00{Ad{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{Ed}}Ad}f}{Adf}00``555{{EfEhEhDl}{{Cb{EfAd}}}}{{{b{Ej}}}{{Bh{{b{El}}}}}}{{bAf}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}36145024532106{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAfAfAf}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bCf}{{j{{b{c}}}}}{}}00111111111222{{{Bh{{Cb{DlEn}}}}Db{C`{F`{C`{FbFd}}}}Ff}{{Cd{Ed}}}}`222{c{{Bb{e}}}{}{}}00{{}{{Bb{c}}}{}}00{bCj}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bCn}{{j{{b{c}}}}}{}}00888888888","D":"CGn","p":[[1,"reference"],[5,"Private",624],[1,"unit"],[6,"Attribute",625],[5,"Painted",626],[5,"Command",627],[6,"Color",628],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",629],[8,"Result",629],[5,"Args",0],[5,"ArgMatches",630],[8,"Error",631],[6,"Result",632],[5,"Id",633],[6,"Option",634],[5,"Vec",635],[6,"RewriteResult",636],[5,"VecDeque",637],[5,"Box",638],[5,"OrderedHashMap",639],[1,"tuple"],[8,"Result",640],[6,"Quirk",625],[5,"PossibleValue",641],[5,"TypeId",642],[1,"slice"],[5,"Condition",643],[6,"RunMode",190],[5,"Program",644],[1,"str"],[8,"Function",644],[5,"Felt",645],[5,"IntoIter",646],[5,"String",647],[6,"Value",648],[5,"ExecutionResult",649],[6,"RunResultValue",650],[5,"TestsSummary",369],[5,"TestCompilation",651],[1,"bool"],[5,"PackageMetadata",652],[5,"TargetMetadata",652],[5,"TestConfig",653],[5,"FunctionId",654],[6,"CostTokenType",655],[1,"i32"],[5,"RunArgs",190],[6,"TestStatus",369],[5,"TestResult",369]],"r":[],"b":[],"c":"OzAAAAEAAAYAAwAsAAEA5gABAKoBAgA=","e":"OzAAAAEAALEAIAAAAAEAAwACAAkAAQAWAAMALgAEADcAAwA9AAEAQwABAEcAAQBLABAAZgAAAKMABwCtAAkAvwAEANAAAwDoAAIA7wADAPUAAQD8AAAAAgEPAEcBAABVAQAAWAEIAGMBBgByAQEAiQEFALMBBQC9AQQA0QEYADgCAABQAggAXAIIAA=="}],["cairo_native_runtime",{"t":"SSFFFFHHNNNNNNNNHHHHHHHHHHHHHHHHONNNHONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BYTES_IN_WORD","BYTE_ARRAY_MAGIC","DICT_GAS_REFUND_PER_ACCESS","FeltDict","FormattedItem","HALF_PRIME","as_cairo_short_string","as_cairo_short_string_ex","borrow","","","","borrow_mut","","","","cairo_native__dict_drop","cairo_native__dict_dup","cairo_native__dict_gas_refund","cairo_native__dict_get","cairo_native__dict_new","cairo_native__get_costs_builtin","cairo_native__libfunc__debug__print","cairo_native__libfunc__ec__ec_point_from_x_nz","cairo_native__libfunc__ec__ec_point_try_new_nz","cairo_native__libfunc__ec__ec_state_add","cairo_native__libfunc__ec__ec_state_add_mul","cairo_native__libfunc__ec__ec_state_init","cairo_native__libfunc__ec__ec_state_try_finalize_nz","cairo_native__libfunc__hades_permutation","cairo_native__libfunc__pedersen","cairo_native__set_costs_builtin","count","deref","","fmt","format_next_item","free_fn","from","","","","get","inner","into","","","","quote_if_string","try_from","","","","try_into","","","","type_id","","","","upcast","","","","upcast_mut","","","","vzip","","",""],"q":[[0,"cairo_native_runtime"],[73,"starknet_types_core::felt"],[74,"alloc::string"],[75,"core::option"],[76,"core::ffi"],[77,"core::fmt"],[78,"core::iter::traits::iterator"],[79,"core::clone"],[80,"core::result"],[81,"core::any"]],"i":"````````BlBdBfn3210````````````````0210`032103032103321032103210321032103210","f":"``````{{{d{b}}}{{h{f}}}}{{{d{b}}j}{{h{f}}}}{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}000{{n{h{{Af{A`}{{Ab{Ad}}}}}}}Ad}{{n{Af{A`}{{Ab{A`}}}}}n}{nAh}{{{d{ln}}{d{{Al{Aj}}}}}A`}{{{Af{A`}{{Ab{Ad}}}}}n}{{}Ah}{{AnAlB`}An}{{{d{l{Al{{Al{Aj}}}}}}}Bb}0{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{Aj}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Bb}{{{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}}Ad}{{{d{l{Al{Aj}}}}{d{{Al{Aj}}}}{d{{Al{Aj}}}}}Ad}{AhAh}`{{{d{Bd}}}{{d{b}}}}{{{d{Bf}}}{{d{Ah}}}}{{{d{n}}{d{lBh}}}Bj}{{{d{lc}}}{{h{Bl}}}{{C`{}{{Bn{b}}}}Cb}}`{cc{}}000{Blf}`{{}c{}}0001{c{{Cd{e}}}{}{}}000{{}{{Cd{c}}}{}}000{dCf}000{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}0005555","D":"Cn","p":[[5,"Felt",73],[1,"reference"],[5,"String",74],[6,"Option",75],[1,"usize"],[0,"mut"],[5,"FeltDict",0],[6,"c_void",76],[17,"Output"],[1,"unit"],[1,"fn"],[1,"u64"],[1,"u8"],[1,"array"],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[5,"Formatter",77],[8,"Result",77],[5,"FormattedItem",0],[17,"Item"],[10,"Iterator",78],[10,"Clone",79],[6,"Result",80],[5,"TypeId",81]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACoABwAAAAMABgAAAAkABwAhAAMAJgAAACwAAAAyABcA"}],["cairo_native_stress",{"t":"SJFFSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNHHNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","command","command_for_update","compile_and_insert","conceal","","context","cyan","","deref","","deref_mut","","dim","","directory_get_size","directory_is_empty","drop","","fg","","fixed","","fmt","from","","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","modify_starknet_contract","new","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","rounds","set_global_subscriber","strike","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_stress"],[188,"yansi::attr_quirk"],[189,"yansi::paint"],[190,"clap_builder::builder::command"],[191,"yansi::color"],[192,"cairo_lang_sierra::program"],[193,"cairo_native::ffi"],[194,"cairo_native::executor::aot"],[195,"alloc::sync"],[196,"core::cmp"],[197,"core::hash"],[198,"core::fmt"],[199,"std::io::error"],[200,"std::path"],[201,"core::convert"],[202,"clap_builder::parser::matches::arg_matches"],[203,"clap_builder"],[204,"core::result"],[205,"cairo_lang_sierra::ids"],[206,"core::option"],[207,"clap_builder::util::id"],[208,"alloc::boxed"],[209,"cairo_lang_semantic::substitution"],[210,"alloc::vec"],[211,"alloc::collections::vec_deque"],[212,"cairo_lang_utils::ordered_hash_map"],[213,"cairo_native::context"],[214,"core::any"],[215,"yansi::condition"]],"i":"`````nC`001010101010101010101010101010101011000110110101010``10101001000`110010111111100000001010101010`10`1101010101010101010101010101010101010101001010101010100`10101010101010001010101010","f":"`````{{bd}{{f{{b{c}}}}}{}}0{hh}0{{bj}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0222222222222222222`22{{}h}0{{{b{l{n{c}}}}c{b{A`}}Ab}{{Af{Ad}}}{AhAjAlAn}}44`44{B`{{b{c}}}{}}0{B`{{b{lc}}}{}}066{c{{Bd{Bb}}}{{Bh{Bf}}}}{c{{Bd{Bj}}}{{Bh{Bf}}}}{B`Bl}0::{{bBn}{{f{{b{c}}}}}{}}0{{{b{C`}}{b{lCb}}}Cd}{cc{}}0{{{b{Cf}}}{{Cj{C`Ch}}}}{{{b{lCf}}}{{Cj{C`Ch}}}}{Cl{{D`{CnA`}}}}{{{b{{n{c}}}}{b{c}}}{{Db{{Af{Ad}}}}}{AhAjAlAn}}{b{{f{{b{c}}}}}{}}0{{}{{Db{Dd}}}}{{}B`}0{{{b{l}}{b{l{Df{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Cj{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{D`{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Dj{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dl{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dn{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Db{c}}}}}{{Cj{Dhe}}}{}{}}1034265{{}c{}}0::::::::{{}Bl};;{{A`ClCl}A`}{{{b{E`}}}{{n{c}}}{AhAjAlAn}}========================{{bBn}{{f{{b{c}}}}}{}}0>>>>>>>>{{bBnBnBn}{{f{{b{c}}}}}{}}0????`??{{bEb}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000022`{{{b{C`}}}Bl}11{c{{Cj{e}}}{}{}}0{{}{{Cj{c}}}{}}0{bEd}044{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{{b{lC`}}{b{Cf}}}{{Cj{BlCh}}}}{{{b{lC`}}{b{lCf}}}{{Cj{BlCh}}}}??{{bEf}{{f{{b{c}}}}}{}}0999999","D":"A@j","p":[[1,"reference"],[6,"Attribute",188],[5,"Painted",189],[5,"Command",190],[6,"Color",191],[0,"mut"],[5,"NaiveAotCache",0],[5,"Program",192],[6,"OptLevel",193],[5,"AotNativeExecutor",194],[5,"Arc",195],[10,"PartialEq",196],[10,"Eq",196],[10,"Hash",197],[10,"Display",198],[1,"usize"],[1,"u64"],[8,"Result",199],[5,"Path",200],[10,"AsRef",201],[1,"bool"],[1,"unit"],[1,"u8"],[5,"StressTestCommand",0],[5,"Formatter",198],[8,"Result",198],[5,"ArgMatches",202],[8,"Error",203],[6,"Result",204],[1,"u32"],[5,"FunctionId",205],[1,"tuple"],[6,"Option",206],[5,"Id",207],[5,"Box",208],[6,"RewriteResult",209],[5,"Vec",210],[5,"VecDeque",211],[5,"OrderedHashMap",212],[5,"NativeContext",213],[6,"Quirk",188],[5,"TypeId",214],[5,"Condition",215]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADcAEQACAAAACAABABQAAwAqAAAALQABADIAAAA1AAMAPAACAEMAAABGAAEASQAAAEwAEABnAAAAawAAAKIAAAClAAUArQAHAA=="}],["cairo_native_test",{"t":"FONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNOONNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOONNNNNNOOONNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","attr","augment_args","augment_args_for_update","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","command","command_for_update","conceal","cyan","deref","deref_mut","dim","drop","fg","filter","fixed","fmt","from","from_arg_matches","from_arg_matches_mut","green","group_id","ignored","include_ignored","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","main","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","opt_level","path","primary","quirk","rapid_blink","red","resetting","rgb","run_mode","single_file","starknet","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","whenever","white","wrap","yellow","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_test"],[102,"cairo_native_test::utils"],[281,"cairo_native_test::utils::test"],[536,"yansi::attr_quirk"],[537,"yansi::paint"],[538,"clap_builder::builder::command"],[539,"yansi::color"],[540,"core::fmt"],[541,"clap_builder::parser::matches::arg_matches"],[542,"clap_builder"],[543,"core::result"],[544,"clap_builder::util::id"],[545,"core::option"],[546,"alloc::boxed"],[547,"cairo_lang_semantic::substitution"],[548,"cairo_lang_utils::ordered_hash_map"],[549,"alloc::collections::vec_deque"],[550,"alloc::vec"],[551,"anyhow"],[552,"core::any"],[553,"yansi::condition"],[554,"dyn_clone::sealed"],[555,"cairo_lang_sierra::program"],[556,"starknet_types_core::felt"],[557,"alloc::vec::into_iter"],[558,"alloc::string"],[559,"cairo_native::values"],[560,"cairo_native::execution_result"],[561,"cairo_lang_runner"],[562,"clap_builder::builder::possible_value"],[563,"cairo_lang_test_plugin"],[564,"scarb_metadata"],[565,"cairo_lang_test_plugin::test_config"],[566,"cairo_lang_sierra::ids"],[567,"cairo_lang_sierra::extensions::modules::gas"]],"i":"`Ad0000000000000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`00000Cj0``0Fd1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Ff0```EbFh2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``{{bd}{{f{{b{c}}}}}{}}{hh}0{{bj}{{f{{b{c}}}}}{}}{b{{f{{b{c}}}}}{}}000{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}2222222222{{}h}033{n{{b{c}}}{}}{n{{b{lc}}}{}}5{nA`}7`{{bAb}{{f{{b{c}}}}}{}}{{{b{Ad}}{b{lAf}}}Ah}{cc{}}{{{b{Aj}}}{{An{AdAl}}}}{{{b{lAj}}}{{An{AdAl}}}};{{}{{Bb{B`}}}}``{{}n}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{}c{}}{b{{f{{b{c}}}}}{}}000{{}{{C`{A`}}}}1111111111111{{bAb}{{f{{b{c}}}}}{}}2222{{bAbAbAb}{{f{{b{c}}}}}{}}33``3{{bCb}{{f{{b{c}}}}}{}}4441```4{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bCd}7{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}{{{b{lAd}}{b{Aj}}}{{An{A`Al}}}}{{{b{lAd}}{b{lAj}}}{{An{A`Al}}}}`<{{bCf}{{f{{b{c}}}}}{}}<<<````{{bCh}A`}{{bd}{{f{{b{c}}}}}{}}0{{bj}{{f{{b{c}}}}}{}}0????????7766????????????????????{{{b{Cj}}}Cj}{{b{b{lc}}}A`{}}{bA`}{b{{f{{b{c}}}}}{}}000{n{{b{c}}}{}}0{n{{b{lc}}}{}}022{nA`}077{{{b{Cl}}{b{Cn}}}{{C`{{b{D`}}}}}}{{bAb}{{f{{b{c}}}}}{}}0{{{b{Cj}}{b{lAf}}}Ah}{{{Dd{Db}}}Df}{cc{}}088{{}n}0{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}2631054{{}c{}}0{b{{f{{b{c}}}}}{}}000{{{b{Dh}}}{{Bn{Db}}}}111111111111111111111111111111>>11111111{{bAbAbAb}{{f{{b{c}}}}}{}}02222`22{{bCb}{{f{{b{c}}}}}{}}0333333{{{b{Dj}}}{{C`{Dl}}}}22`44`{bc{}}{{{b{Cj}}}{{Bb{Dn}}}}{c{{An{e}}}{}{}}0{{}{{An{c}}}{}}0{bCd}099{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{}{{b{{E`{Cj}}}}}}=={{bCf}{{f{{b{c}}}}}{}}0======`````{{bd}{{f{{b{c}}}}}{}}00{{bj}{{f{{b{c}}}}}{}}00????????????555444????????????????????????????????????{n{{b{c}}}{}}00{n{{b{lc}}}{}}00{b{{f{{b{c}}}}}{}}00{{{b{Eb}}n}A`}{nA`}00``555{{EdEfEfDf}{{Bh{Edn}}}}{{{b{Eh}}}{{Bn{{b{Ej}}}}}}{{bAb}{{f{{b{c}}}}}{}}00{cc{}}00`666`{{}n}00{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}41620356203514{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAbAbAb}{{f{{b{c}}}}}{}}00{b{{f{{b{c}}}}}{}}00000`000{{bCb}{{f{{b{c}}}}}{}}00111111111222{{{Bn{{Bh{DfEl}}}}Cl{Bj{En{Bj{F`Fb}}}}Fd}{{C`{Eb}}}}`222{c{{An{e}}}{}{}}00{{}{{An{c}}}{}}00{bCd}00555{b{{b{c}}}{}}00{{{b{l}}}{{b{lc}}}{}}00999{{bCf}{{f{{b{c}}}}}{}}00888888888","D":"C@j","p":[[1,"reference"],[6,"Attribute",536],[5,"Painted",537],[5,"Command",538],[6,"Color",539],[0,"mut"],[1,"usize"],[1,"unit"],[1,"u8"],[5,"Args",0],[5,"Formatter",540],[8,"Result",540],[5,"ArgMatches",541],[8,"Error",542],[6,"Result",543],[5,"Id",544],[6,"Option",545],[5,"Box",546],[6,"RewriteResult",547],[1,"tuple"],[5,"OrderedHashMap",548],[5,"VecDeque",549],[5,"Vec",550],[8,"Result",551],[6,"Quirk",536],[5,"TypeId",552],[5,"Condition",553],[5,"Private",554],[6,"RunMode",102],[5,"Program",555],[1,"str"],[8,"Function",555],[5,"Felt",556],[5,"IntoIter",557],[5,"String",558],[6,"Value",559],[5,"ExecutionResult",560],[6,"RunResultValue",561],[5,"PossibleValue",562],[1,"slice"],[5,"TestsSummary",281],[5,"TestCompilation",563],[1,"bool"],[5,"PackageMetadata",564],[5,"TargetMetadata",564],[5,"TestConfig",565],[5,"FunctionId",566],[6,"CostTokenType",567],[1,"i32"],[5,"RunArgs",102],[6,"TestStatus",281],[5,"TestResult",281]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAUAEAAAABYAjgCPAFIBUwFUAQ==","e":"OzAAAAEAAJMAIAAAAAAABAABAAsAAQAXAAEAGwABAB4AAAAiAAAAJAABACcAAAAqAAcANwAAAFkAAgBdAAUAZwAEAHgAAwCQAAIAlwADAJ0AAQCkAAAAqgAPAO8AAAD9AAAAAAEIAAsBBgAaAQEAMQEFAFsBBQBlAQQAeQEYAOABAAD4AQgABAIIAA=="}],["scarb_native_dump",{"t":"HCPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[181,"scarb_native_dump::utils::test"],[436,"anyhow"],[437,"dyn_clone::sealed"],[438,"yansi::attr_quirk"],[439,"yansi::paint"],[440,"yansi::color"],[441,"cairo_lang_sierra::program"],[442,"core::fmt"],[443,"starknet_types_core::felt"],[444,"alloc::vec::into_iter"],[445,"alloc::string"],[446,"alloc::vec"],[447,"cairo_lang_semantic::substitution"],[448,"core::result"],[449,"core::option"],[450,"cairo_lang_utils::ordered_hash_map"],[451,"alloc::boxed"],[452,"alloc::collections::vec_deque"],[453,"cairo_native::values"],[454,"cairo_native::execution_result"],[455,"cairo_lang_runner"],[456,"clap_builder::builder::possible_value"],[457,"core::any"],[458,"yansi::condition"],[459,"cairo_lang_test_plugin"],[460,"scarb_metadata"],[461,"cairo_lang_test_plugin::test_config"],[462,"cairo_lang_sierra::ids"],[463,"cairo_lang_sierra::extensions::modules::gas"]],"i":"``Ab0``0Ej1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101El0```DhEn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"{{}{{d{b}}}}`````{{fh}b}{{fj}{{l{{f{c}}}}}{}}0{{fn}{{l{{f{c}}}}}{}}0{f{{l{{f{c}}}}}{}}0000000{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}022222222222222222222{{{f{Ab}}}Ab}{{f{f{A`c}}}b{}}{fb}5555{Ad{{f{c}}}{}}0{Ad{{f{A`c}}}{}}077{Adb}099{{{f{Af}}{f{Ah}}}{{d{{f{Aj}}}}}}{{fAl}{{l{{f{c}}}}}{}}0{{{f{Ab}}{f{A`An}}}B`}{{{Bd{Bb}}}Bf}{cc{}}0=={{}Ad}0{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}6510342{{}c{}}0{f{{l{{f{c}}}}}{}}000{{{f{Ch}}}{{Bh{Bb}}}}111111111111111111111111111111>>11111111{{fAlAlAl}{{l{{f{c}}}}}{}}02222`22{{fCj}{{l{{f{c}}}}}{}}0333333{{{f{Cl}}}{{d{Cn}}}}22`44`{fc{}}{{{f{Ab}}}{{Bn{D`}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{fDb}099{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}0{{}{{f{{Dd{Ab}}}}}}=={{fDf}{{l{{f{c}}}}}{}}0======`````{{fj}{{l{{f{c}}}}}{}}00{{fn}{{l{{f{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{f{c}}}{}}00{Ad{{f{A`c}}}{}}00{f{{l{{f{c}}}}}{}}00{{{f{Dh}}Ad}b}{Adb}00``555{{DjDlDlBf}{{C`{DjAd}}}}{{{f{Dn}}}{{Bh{{f{E`}}}}}}{{fAl}{{l{{f{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}63504210245631{{}c{}}00???????????????????????????????????????????????????:::????????????{{fAlAlAl}{{l{{f{c}}}}}{}}00{f{{l{{f{c}}}}}{}}00000`000{{fCj}{{l{{f{c}}}}}{}}00111111111222{{{Bh{{C`{BfEb}}}}Af{Cb{Ed{Cb{EfEh}}}}Ej}{{d{Dh}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{fDb}00555{f{{f{c}}}{}}00{{{f{A`}}}{{f{A`c}}}{}}00999{{fDf}{{l{{f{c}}}}}{}}00888888888","D":"BGn","p":[[1,"unit"],[8,"Result",436],[1,"reference"],[5,"Private",437],[6,"Attribute",438],[5,"Painted",439],[6,"Color",440],[0,"mut"],[6,"RunMode",2],[1,"usize"],[5,"Program",441],[1,"str"],[8,"Function",441],[1,"u8"],[5,"Formatter",442],[8,"Result",442],[5,"Felt",443],[5,"IntoIter",444],[5,"String",445],[5,"Vec",446],[6,"RewriteResult",447],[6,"Result",448],[6,"Option",449],[1,"tuple"],[5,"OrderedHashMap",450],[5,"Box",451],[5,"VecDeque",452],[6,"Value",453],[6,"Quirk",438],[5,"ExecutionResult",454],[6,"RunResultValue",455],[5,"PossibleValue",456],[5,"TypeId",457],[1,"slice"],[5,"Condition",458],[5,"TestsSummary",181],[5,"TestCompilation",459],[1,"bool"],[5,"PackageMetadata",460],[5,"TargetMetadata",460],[5,"TestConfig",461],[5,"FunctionId",462],[6,"CostTokenType",463],[1,"i32"],[5,"RunArgs",2],[6,"TestStatus",181],[5,"TestResult",181]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAQAEAAAACoAKwDuAO8A8AA=","e":"OzAAAAEAAHUAFAAAAAAAAgAFABQAAwAsAAIAMwADADkAAQBAAAAARgAPAIsAAACZAAAAnAAIAKcABgC2AAEAzQAFAPcABQABAQQAFQEYAHwBAACUAQgAoAEIAA=="}],["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNONNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOONNNONNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","","attr","","","augment_args","augment_args_for_update","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize_test_compilation","dim","","","drop","","","fg","","","filter","fixed","","","fmt","","from","","","from_arg_matches","from_arg_matches_mut","green","","","group_id","ignored","include_ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","main","mask","","","matches","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","opt_level","packages_filter","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_mode","seen","strike","","","test_kind","to_owned","","to_possible_value","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","","","whenever","","","white","","","wrap","","","yellow","","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_test"],[284,"scarb_native_test::utils"],[463,"scarb_native_test::utils::test"],[718,"dyn_clone::sealed"],[719,"yansi::attr_quirk"],[720,"yansi::paint"],[721,"clap_builder::builder::command"],[722,"yansi::color"],[723,"std::path"],[724,"alloc::string"],[725,"cairo_lang_test_plugin"],[726,"anyhow"],[727,"core::fmt"],[728,"clap_builder::parser::matches::arg_matches"],[729,"clap_builder"],[730,"core::result"],[731,"clap_builder::util::id"],[732,"core::option"],[733,"cairo_lang_semantic::substitution"],[734,"cairo_lang_utils::ordered_hash_map"],[735,"alloc::vec"],[736,"alloc::boxed"],[737,"alloc::collections::vec_deque"],[738,"clap_builder::builder::possible_value"],[739,"core::any"],[740,"yansi::condition"],[741,"cairo_lang_sierra::program"],[742,"starknet_types_core::felt"],[743,"alloc::vec::into_iter"],[744,"cairo_native::values"],[745,"cairo_native::execution_result"],[746,"cairo_lang_runner"],[747,"scarb_metadata"],[748,"cairo_lang_test_plugin::test_config"],[749,"cairo_lang_sierra::ids"],[750,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ad`0``0Ab101Af111201201201201201201201201201201201201201201201201201212121112012020120120`12012012011201212011120111120111111122222220000000120120120120120`12021201201201201201201201201201201201201201201201201201201201201112012012012012012010120112212012012012012012011`20120120120120120Dl0``0Fj1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fl0```ElFn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}00{ll}0{{bn}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000000{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00222222222222222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}0777777{{}Ad}{{}Af}{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{{{b{Aj}}Al}{{B`{An}}}}<<<{Ahf}00>>>`{{bBb}{{j{{b{c}}}}}{}}00{{{b{Ab}}{b{A`Bd}}}Bf}{{{b{Ad}}{b{A`Bd}}}Bf}{cc{}}00{{{b{Bh}}}{{Bl{AbBj}}}}{{{b{A`Bh}}}{{Bl{AbBj}}}}{b{{j{{b{c}}}}}{}}00{{}{{C`{Bn}}}}``{{}Ah}00{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}64105321623504{{}c{}}00::::::::::::{{}{{B`{f}}}};;;{{{b{Ad}}{b{Cn}}}D`}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{{bBb}{{j{{b{c}}}}}{}}00============{{bBbBbBb}{{j{{b{c}}}}}{}}00>>>>>>``>>>{{bDb}{{j{{b{c}}}}}{}}00?????????111``???`{bc{}}0{{{b{Ad}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{A`Ab}}{b{Bh}}}{{Bl{fBj}}}}{{{b{A`Ab}}{b{A`Bh}}}{{Bl{fBj}}}}`{{}{{b{{Dh{Ad}}}}}}{{{b{A`Af}}AlAl}D`}{{}c{}}00{{bDj}{{j{{b{c}}}}}{}}00888888888````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0;;;;;;;;::99;;;;;;;;;;;;;;;;;;;;{{{b{Dl}}}Dl}{{b{b{A`c}}}f{}}{bf}>>>>{Ah{{b{c}}}{}}0{Ah{{b{A`c}}}{}}0{b{{j{{b{c}}}}}{}}0{Ahf}077{{{b{Dn}}{b{Cn}}}{{B`{{b{E`}}}}}}{{bBb}{{j{{b{c}}}}}{}}0{{{b{Dl}}{b{A`Bd}}}Bf}{{{Ed{Eb}}}Al}{cc{}}066{{}Ah}0{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}3260145{{}c{}}0????{{{b{Ef}}}{{Cf{Eb}}}}{b{{j{{b{c}}}}}{}}00000000000000000000000000000>>00000000{{bBbBbBb}{{j{{b{c}}}}}{}}01111`11{{bDb}{{j{{b{c}}}}}{}}0222222{{{b{Eh}}}{{B`{Ej}}}}22`33`{bc{}}{{{b{Dl}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{bDf}088{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Dh{Dl}}}}}}=={{bDj}{{j{{b{c}}}}}{}}0<<<<<<`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00>>>>>>>>>>>>555444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{El}}Ah}f}{Ahf}00``555{{AnD`D`Al}{{Cl{AnAh}}}}{{{b{En}}}{{Cf{{b{F`}}}}}}{{bBb}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ah}00{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}63215044015632{{}c{}}00???????????????????????????????????????????????????:::????????????{{bBbBbBb}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bDb}{{j{{b{c}}}}}{}}00111111111222{{{Cf{{Cl{AlFb}}}}Dn{Cd{Fd{Cd{FfFh}}}}Fj}{{B`{El}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bDj}{{j{{b{c}}}}}{}}00888888888","D":"COj","p":[[1,"reference"],[5,"Private",718],[1,"unit"],[6,"Attribute",719],[5,"Painted",720],[5,"Command",721],[6,"Color",722],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",723],[5,"String",724],[5,"TestCompilation",725],[8,"Result",726],[1,"u8"],[5,"Formatter",727],[8,"Result",727],[5,"ArgMatches",728],[8,"Error",729],[6,"Result",730],[5,"Id",731],[6,"Option",732],[6,"RewriteResult",733],[5,"OrderedHashMap",734],[5,"Vec",735],[5,"Box",736],[5,"VecDeque",737],[1,"tuple"],[1,"str"],[1,"bool"],[6,"Quirk",719],[5,"PossibleValue",738],[5,"TypeId",739],[1,"slice"],[5,"Condition",740],[6,"RunMode",284],[5,"Program",741],[8,"Function",741],[5,"Felt",742],[5,"IntoIter",743],[6,"Value",744],[5,"ExecutionResult",745],[6,"RunResultValue",746],[5,"TestsSummary",463],[5,"PackageMetadata",747],[5,"TargetMetadata",747],[5,"TestConfig",748],[5,"FunctionId",749],[6,"CostTokenType",750],[1,"i32"],[5,"RunArgs",284],[6,"TestStatus",463],[5,"TestResult",463]],"r":[],"b":[],"c":"OzAAAAEAAAcAAwA+AAIARAEBAAgCAgA=","e":"OzAAAAEAANEAJQAAAAEAAwAFAAwAAQAdAAUAQQAHAE8ACABbAAIAZQABAGoAAQBvAAAAcgAXAJkAAACdAAAA2wAAAO8AAAD0AAsAAwEJAA4BAgAdAQQALgEDAEYBAgBNAQMAUwEBAFoBAABgAQ8ApQEAALMBAAC2AQgAwQEGANABAQDnAQUAEQIFABsCBAAvAhgAlgIAAK4CCAC6AggA"}]]'));
+var searchIndex = new Map(JSON.parse('[["cairo_native",{"t":"PPPPPPPPPPPPPPGPPPPPPPPPPPPPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNHNNCNNCNNNNNNNNCNNNNNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHQQHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCNNNNNNNNNNNNNNNNCNNNNNNNNNNOOOOOOOOOOOPEPEGCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHCCCCCCCCPPPPPGPPPGPPPPPPPPPPPPPPPPPPPPIPPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNFFFNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNOONNNOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNCNNNNNNNNNNNNNNNNNNNCNNNNNCCCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNCNNNNNNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNNNMNOOOMNMNNNNNNNNNNNNNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNFFFNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHNNNNNNNNNNNNNNNNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNFJFJSNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNOHNNHHNNNNNNNNNNONNNNNHHHNNHHHNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNNNNHNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNH","n":["Aggressive","Array","BoundedInt","Bytes31","Default","EcPoint","EcState","Enum","Felt252","Felt252Dict","IntRange","Less","None","Null","OptLevel","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","Value","__clone_box","","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","clone","","clone_into","","clone_to_uninit","","cmp","compare","compile","conceal","","context","cyan","","debug","default","deref","","deref_mut","","deserialize","dim","","docs","drop","","eq","","equivalent","","","","","","","","error","execution_result","executor","fg","","fixed","","fmt","","from","","","","","","","","","","","","","","","","","","green","","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","metadata","module","module_to_object","native_assert","native_panic","object_to_shared_lib","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","partial_cmp","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","serialize","starknet","starknet_stub","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","utils","vzip","","whenever","","white","","wrap","","yellow","","debug_name","","","fields","range","tag","value","","","x","y","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","","","green","init","internal_rewrite","","","","","","","into","invert","italic","jit","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AotProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","JitProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","context","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeContext","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile","conceal","context","cyan","default","deref","deref_mut","dim","drop","eq","equivalent","","","","fg","fixed","fmt","from","green","init","initialize_mlir","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","libfunc_to_name","section01","section02","section03","section04","section05","section06","section07","section08","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","IntegerConversion","IntegerLikeTypeExpected","IoError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","LibraryLoadError","LinkError","MissingBuiltinCostsSymbol","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","NativeAssert","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SelectorNotFound","SerdeJsonError","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","fg","","","fixed","","","fmt","","","","","","from","","","","","","","","","","","","","","","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","make_missing_parameter","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","panic","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","source","strike","","","to_smolstr","","","to_string","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","range","value","ranges","NativeAssertError","ToNativeAssertError","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","to_native_assert_error","to_smolstr","to_string","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","","","attr","","","bg","","","bitwise","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","builtin_stats","circuit_add","circuit_mul","clear","","","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize","","","dim","","","drop","","","ec_op","eq","","","equivalent","","","","","","","","","","","","error_msg","failure_flag","fg","","","fixed","","","fmt","","","from","","","from_execution_result","green","","","hash","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","partial_cmp","","pedersen","poseidon","primary","","","quirk","","","range_check","range_check_96","rapid_blink","","","red","","","remaining_gas","","resetting","","","return_value","return_values","rgb","","","segment_arena","serialize","","","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","AotContractExecutor","AotNativeExecutor","JitNativeExecutor","__clone_box","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","clone_into","clone_to_uninit","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","","fg","","","find_function_ptr","","","find_symbol_ptr","","","fixed","","","fmt","","","from","","","from_native_module","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","invoke_contract_dynamic","","invoke_dynamic","","invoke_dynamic_with_syscall_handler","","italic","","","linger","","","load","magenta","","","mask","","","module","new","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","program_registry","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run","save","strike","","","to_owned","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","MetadataStorage","attr","auto_breakpoint","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_utils","default","deref","deref_mut","dim","drop","drop_overrides","dup_overrides","enum_snapshot_variants","fg","fixed","fmt","from","gas","get","get_mut","get_or_insert_with","green","init","insert","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc_bindings","red","remove","resetting","rgb","runtime_bindings","strike","tail_recursion","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","","add_event","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","cyan","","default","deref","","deref_mut","","dim","","drop","","eq","equivalent","","","","fg","","fixed","","fmt","","from","","green","","has_event","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","maybe_breakpoint","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","type_id","variant_idx","DebugUtils","attr","bg","black","blink","blue","bold","borrow","borrow_mut","breakpoint_marker","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_breakpoint_trap","debug_print","default","deref","deref_mut","dim","drop","dump_mem","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","quirk","rapid_blink","red","register_impls","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DropOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DupOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","EnumSnapshotVariantsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","from","get_variants","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","set_mapping","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","","","ap_change_info","attr","","","","bg","","","","black","","","","blink","","","","blue","","","","bold","","","","borrow","","","","borrow_mut","","","","bright","","","","bright_black","","","","bright_blue","","","","bright_cyan","","","","bright_green","","","","bright_magenta","","","","bright_red","","","","bright_white","","","","bright_yellow","","","","clear","","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","","cyan","","","","default","","deref","","","","deref_mut","","","","dim","","","","drop","","","","eq","","","equivalent","","","","","","","","","","","","fg","","","","fixed","","","","fmt","","","","","from","","","","","","function_set_costs","gas_info","get_gas_cost_for_statement_and_cost_token_type","get_gas_costs_for_statement","get_initial_available_gas","green","","","","hash","init","","","","initial_required_gas","initial_required_gas_for_entry_points","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","invert","","","","italic","","","","linear_ap_change_solver","linear_gas_solver","linger","","","","magenta","","","","mask","","","","new","on_black","","","","on_blue","","","","on_bright","","","","on_bright_black","","","","on_bright_blue","","","","on_bright_cyan","","","","on_bright_green","","","","on_bright_magenta","","","","on_bright_red","","","","on_bright_white","","","","on_bright_yellow","","","","on_cyan","","","","on_fixed","","","","on_green","","","","on_magenta","","","","on_primary","","","","on_red","","","","on_rgb","","","","on_white","","","","on_yellow","","","","primary","","","","quirk","","","","rapid_blink","","","","red","","","","resetting","","","","rgb","","","","source","strike","","","","to_owned","","","to_smolstr","to_string","try_from","","","","try_into","","","","type_id","","","","underline","","","","upcast","","","","upcast_mut","","","","vzip","","","","whenever","","","","white","","","","wrap","","","","yellow","","","","gas","ReallocBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","free","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","RuntimeBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dict_drop","dict_dup","dict_gas_refund","dict_get","dict_insert","dict_new","dim","drop","fg","fixed","fmt","from","get_gas_builtin","green","init","internal_rewrite","","","","","","","into","invert","italic","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_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vtable_cheatcode","vzip","whenever","white","wrap","yellow","TailRecursionMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","depth_counter","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","recursion_target","red","resetting","return_target","rgb","set_return_target","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeModule","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get_metadata","green","init","insert_metadata","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","metadata","module","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","program_registry","quirk","rapid_blink","red","remove_metadata","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","","","","","","","","","","account_contract_address","","account_deployment_data","attr","","","","","","","","","","","","bg","","","","","","","","","","","","black","","","","","","","","","","","","blink","","","","","","","","","","","","block_info","","block_number","block_timestamp","blue","","","","","","","","","","","","bold","","","","","","","","","","","","borrow","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","bright","","","","","","","","","","","","bright_black","","","","","","","","","","","","bright_blue","","","","","","","","","","","","bright_cyan","","","","","","","","","","","","bright_green","","","","","","","","","","","","bright_magenta","","","","","","","","","","","","bright_red","","","","","","","","","","","","bright_white","","","","","","","","","","","","bright_yellow","","","","","","","","","","","","cairo_native__vtable_cheatcode","call_contract","","caller_address","","capacity","chain_id","","cheatcode","clear","","","","","","","","","","","","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","","","","","","","compare","","","","","","","conceal","","","","","","","","","","","","contract_address","","cyan","","","","","","","","","","","","default","","","deploy","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","dim","","","","","","","","","","","","drop","","","","","","","","","","","","emit_event","","entry_point_selector","","eq","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fee_data_availability_mode","fg","","","","","","","","","","","","fixed","","","","","","","","","","","","fmt","","","","","","","","","","","from","","","","","","","","","","","","get_block_hash","","get_class_hash_at","","get_execution_info","","get_execution_info_v2","","green","","","","","","","","","","","","hash","","","","","","","","","hi","init","","","","","","","","","","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","invert","","","","","","","","","","","","is_infinity","","italic","","","","","","","","","","","","keccak","","library_call","","linger","","","","","","","","","","","","lo","magenta","","","","","","","","","","","","mask","","","","","","","","","","","","max_amount","max_fee","","max_price_per_unit","new","","nonce","","nonce_data_availability_mode","on_black","","","","","","","","","","","","on_blue","","","","","","","","","","","","on_bright","","","","","","","","","","","","on_bright_black","","","","","","","","","","","","on_bright_blue","","","","","","","","","","","","on_bright_cyan","","","","","","","","","","","","on_bright_green","","","","","","","","","","","","on_bright_magenta","","","","","","","","","","","","on_bright_red","","","","","","","","","","","","on_bright_white","","","","","","","","","","","","on_bright_yellow","","","","","","","","","","","","on_cyan","","","","","","","","","","","","on_fixed","","","","","","","","","","","","on_green","","","","","","","","","","","","on_magenta","","","","","","","","","","","","on_primary","","","","","","","","","","","","on_red","","","","","","","","","","","","on_rgb","","","","","","","","","","","","on_white","","","","","","","","","","","","on_yellow","","","","","","","","","","","","partial_cmp","","","","","","","paymaster_data","primary","","","","","","","","","","","","ptr","quirk","","","","","","","","","","","","rapid_blink","","","","","","","","","","","","red","","","","","","","","","","","","replace_class","","resetting","","","","","","","","","","","","resource","resource_bounds","rgb","","","","","","","","","","","","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","","sequencer_address","serialize","","","","","","","","","sha256_process_block","","signature","","since","storage_read","","storage_write","","strike","","","","","","","","","","","","tip","to_owned","","","","","","","","","","transaction_hash","","try_from","","","","","","","","","","","","try_into","","","","","","","","","","","","tx_info","","type_id","","","","","","","","","","","","underline","","","","","","","","","","","","until","upcast","","","","","","","","","","","","upcast_mut","","","","","","","","","","","","version","","vzip","","","","","","","","","","","","whenever","","","","","","","","","","","","white","","","","","","","","","","","","wrap","","","","","","","","","","","","x","","y","","yellow","","","","","","","","","","","","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","","","attr","","","bg","","","big4int_to_u256","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","call_contract","cheatcode","clear","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","cyan","","","data","decode_felts_as_str","default","","deploy","deref","","","deref_mut","","","dim","","","drop","","","emit_event","encode_str_as_felts","events","","execution_info","fg","","","fixed","","","fmt","","","from","","","get_block_hash","get_class_hash_at","get_execution_info","get_execution_info_v2","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","keccak","keys","l2_to_l1_messages","library_call","linger","","","logs","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","quirk","","","rapid_blink","","","red","","","replace_class","resetting","","","rgb","","","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","sha256_process_block","storage","storage_read","storage_write","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","u256_to_biguint","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","BuiltinCosts","HALF_PRIME","LayoutError","PRIME","SHARED_LIBRARY_EXT","__clone_box","","add_mod","attr","","bg","","bitwise","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cairo_to_sierra","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","const","create_engine","cyan","","debug_with","decode_error_message","default","deref","","deref_mut","","deserialize","dim","","drop","","ecop","eq","equivalent","","","","felt252_bigint","felt252_short_str","felt252_str","fg","","find_entry_point","find_entry_point_by_idx","find_function_id","fixed","","fmt","","","from","","generate_function_name","get_integer_layout","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","layout_repeat","linger","","magenta","","mask","","mem_tracing","mul_mod","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","padding_needed_for","pedersen","poseidon","primary","","quirk","","rapid_blink","","red","","register_runtime_symbols","resetting","","rgb","","run_pass_manager","serialize","strike","","to_owned","","to_smolstr","to_string","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","report_stats"],"q":[[0,"cairo_native"],[251,"cairo_native::Value"],[262,"cairo_native::cache"],[352,"cairo_native::cache::aot"],[437,"cairo_native::cache::jit"],[523,"cairo_native::context"],[615,"cairo_native::debug"],[616,"cairo_native::docs"],[624,"cairo_native::error"],[929,"cairo_native::error::CompilerError"],[931,"cairo_native::error::SierraAssertError"],[932,"cairo_native::error::panic"],[1020,"cairo_native::execution_result"],[1329,"cairo_native::executor"],[1602,"cairo_native::metadata"],[1700,"cairo_native::metadata::auto_breakpoint"],[1885,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[1887,"cairo_native::metadata::debug_utils"],[1982,"cairo_native::metadata::drop_overrides"],[2065,"cairo_native::metadata::dup_overrides"],[2148,"cairo_native::metadata::enum_snapshot_variants"],[2232,"cairo_native::metadata::gas"],[2613,"cairo_native::metadata::gas::GasMetadataError"],[2614,"cairo_native::metadata::realloc_bindings"],[2699,"cairo_native::metadata::runtime_bindings"],[2799,"cairo_native::metadata::tail_recursion"],[2886,"cairo_native::module"],[2975,"cairo_native::starknet"],[4209,"cairo_native::starknet_stub"],[4509,"cairo_native::utils"],[4721,"cairo_native::utils::mem_tracing"],[4722,"dyn_clone::sealed"],[4723,"yansi::attr_quirk"],[4724,"yansi::paint"],[4725,"yansi::color"],[4726,"cairo_native::ffi"],[4727,"cairo_native::values"],[4728,"core::cmp"],[4729,"melior::context"],[4730,"melior::ir::module"],[4731,"cairo_lang_sierra::program"],[4732,"cairo_lang_sierra::extensions::core"],[4733,"cairo_lang_sierra::program_registry"],[4734,"melior::ir::attribute"],[4735,"core::result"],[4736,"serde::de"],[4737,"core::fmt"],[4738,"core::convert"],[4739,"starknet_types_core::felt"],[4740,"core::clone"],[4741,"alloc::vec"],[4742,"core::hash"],[4743,"alloc::boxed"],[4744,"cairo_lang_semantic::substitution"],[4745,"alloc::collections::vec_deque"],[4746,"core::option"],[4747,"cairo_lang_utils::ordered_hash_map"],[4748,"std::path"],[4749,"serde::ser"],[4750,"core::any"],[4751,"yansi::condition"],[4752,"cairo_native::executor::aot"],[4753,"alloc::sync"],[4754,"cairo_native::executor::jit"],[4755,"core::alloc::layout"],[4756,"melior::error"],[4757,"serde_json::error"],[4758,"libloading::error"],[4759,"std::io::error"],[4760,"cairo_lang_sierra::edit_state"],[4761,"core::num::error"],[4762,"cairo_lang_sierra::ids"],[4763,"core::error"],[4764,"smol_str"],[4765,"alloc::string"],[4766,"cairo_native::executor::contract"],[4767,"core::ffi"],[4768,"libloading::safe"],[4769,"cairo_lang_starknet_classes::contract_class"],[4770,"core::ops::function"],[4771,"melior::ir::block"],[4772,"melior::ir::location"],[4773,"melior::ir::value"],[4774,"melior::execution_engine"],[4775,"cairo_lang_sierra_ap_change"],[4776,"cairo_lang_sierra_gas"],[4777,"cairo_lang_sierra::extensions::modules::gas"],[4778,"alloc::collections::btree::map"],[4779,"melior::ir::operation"],[4780,"ark_ff::biginteger"],[4781,"num_bigint::biguint"],[4782,"anyhow"],[4783,"num_bigint::bigint"],[4784,"alloc::borrow"],[4785,"cairo_native::compiler"]],"i":"A`Ab001000000110`0000000000000`101010101010101010101010101010101010`1010101011`10`10`11010010`101011110000```1010101110000000000000001011011111110000000101010101010``````101010101010101010101010101010101010101011010101010100``1010101010101010`1010101010ABjABlABn2AC`2210ACb0Fn`0```000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`Gj00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Gh000000000000000000000000000000000000000000000000000000000000000000000000000000000000`H`0000000000000000000000000000000000000`0000000000000000000000000000000000000000000000000000`````````Hl0Hn1Bh`00Fb`13111111111111110113`111`1113213213213213213213213213213213213213213213213213213213213213213213213213213211332211111111111111321321321111111333333322222221321321321321321132132132132132132132132132132132132132132132132132132132132132`1321321321321321321132132132132132132132132132132132132132132ACd0ACf``In00000000000000000000000000000000000000000000000000000000000000000000000Jn1111111111111```K`KbKd210210221021021021021021021021021021021021021021021012221021021021020202102102021021021021021022102222111100000021021021021002102021022222221111111000000021021021021021021021021021021021021021021021021021021021021021021021021021021020222102102221021010210102102210210210210210210210210210210210210210210```KfHbGl210210210210210210210210210210210210210210210210210222210210210210210210221021021021021021021010210211111110000000222222210210210101010210221021021021021021021021021021021021021021021021021021021021021021021021021102102102102102221022102102102102102102102102102102102`Bb`0000000000000000000`00000```0000`0000000000000000000000000000000000000000000`0000`0`00000000000``M`0Ln010101010101010101010101010101010101010101010100101010101111110101010100110111111100000001010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010ACh0`Mf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ml000000000000000000000000000000000000000000000000000000000000000000000000000000000`Mn000000000000000000000000000000000000000000000000000000000000000000000000000000000`N`0000000000000000000000000000000000000000000000000000000000000000000000000000000000Ij0````0L`NbHd22103210321032103210321032103210321032103210321032103210321032103210321032102102102103210320210321032103210321322221111333321032103210332103330222221031210322222222211111110000000333333321032103210300210321032103221032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103321032103321032103210321032103210321032103210321032103ACj`Nn00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ob00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Of0000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Hf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```On```0`````````OjA@bA@dA@fA@hA@jA@lA@nAA`AAb525A@`Ol;:9876543210;:9876543210;:9876543210;:98765432985510;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:98765432`Kl2:9185021<;:9876543<;:9876543<;:9876543<;:9876543;:98765;:9876521<;:9876543:921<;:9876543;430221<;:987654321<;:9876543;:987654321<;:987654321<;:987654302:9;:9876543;;;;::::9999888877776666555544443333821<;:987654321<;:98765431<;:987654321<;:98765430202020221<;:9876543;:9876543;21<;:987654322222221111111<<<<<<<;;;;;;;:::::::999999988888887777777666666655555554444444333333321<;:987654321<;:98765434321<;:9876543020221<;:9876543;21<;:987654321<;:987654378574385821<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:9876543;:98765821<;:9876543121<;:987654321<;:987654321<;:98765430221<;:98765437821<;:987654302020202020202020202026;:987654302851020221<;:98765438<;:98765438521<;:987654321<;:9876543:921<;:987654321<;:9876543121<;:987654321<;:98765438521<;:987654321<;:987654321<;:987654321<;:9876543434321<;:9876543```AAfAAhAAj210210`210210210210210210210210210210210210210210210222102102102102102101`2022102102102102`2022102102102102222210210222222211111110000000210210210210221022102102102102102102102102102102102102102102102102102102102102102102102102102102210210222222222222222210210210210210`210210210210210210210210`````LdJd110101101010101010101010101010101010`10101010101`10``1101011010100000```10```1010010``101011111110000000101010`101010`11010101010101010101010101010101010101010`1110101010`1010`11010001010101010101010101010`","f":"`````````````````````````````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0222222222222222222`22{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{b{b{nc}}}f{}}0{bf}0{{{b{A`}}{b{A`}}}Ad}{{b{b{c}}}Ad{}}{{{b{Af}}{b{Ah}}{b{Aj}}{b{{B`{AlAn}}}}{b{nBb}}BdBf}{{Bj{fBh}}}}99`99`{{}A`}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ab}}}Bn}==`{Blf}0{{{b{A`}}{b{A`}}}Bf}{{{b{Ab}}{b{Ab}}}Bf}{{b{b{c}}}Bf{}}0000000```{{bl}{{j{{b{c}}}}}{}}0{{bC`}{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nCb}}}Cd}{{{b{Ab}}{b{nCb}}}Cd}{C`A`}{BlA`}{cc{}}{CfAb}1{ChAb}{CjAb}{{{Cl{c}}}Ab{{Cn{Ab}}}}{D`Ab}{DbAb}{{{b{{Dd{c}}}}}Ab{{Cn{Ab}}Df}}{C`Ab}{DhAb}{DjAb}{DlAb}{DnAb}{E`Ab}{{{Eb{c}}}Ab{{Cn{Ab}}}}{b{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}4312650{{}c{}}0::::::::::``{{{b{Ah}}A`}{{Fb{{Eb{C`}}}}}}``{{{b{{Dd{C`}}}}{b{Fd}}}{{Fb{f}}}}<<<<<<<<<<<<<<<<<<<<<<<<{{bC`}{{j{{b{c}}}}}{}}0========{{bC`C`C`}{{j{{b{c}}}}}{}}0>>>>{{{b{A`}}{b{A`}}}{{El{Ad}}}}??{{bFf}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000033{{{b{Ab}}c}BjFh}``11{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}055{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0`>>{{bFl}{{j{{b{c}}}}}{}}0888888`````````````````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{{Fn{c}}}}{b{nCb}}}Cd{G`GbGdGf}}{{{Gh{c}}}{{Fn{c}}}{G`GbGd}}{{{Gj{c}}}{{Fn{c}}}{G`GbGd}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99`999999999999999>9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{n{Gj{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Gl}}}}}{G`GbGd}}33{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gj{c}}}}{b{nCb}}}Cd{G`GbGd}}{cc{}}{{{b{{Gj{c}}}}{b{c}}}{{El{{Gn{Gl}}}}}{G`GbGd}}:{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{H`}}}{{Gj{c}}}{G`GbGd}}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}};;;;43;;;;;;;;;;{{{b{n{Gh{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Hb}}}}}{GbGdG`}}<{{{b{{Gh{c}}}}}{{b{H`}}}{GbGdG`}}={Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}?{Blf}5{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gh{c}}}}{b{nCb}}}Cd{GbGdG`}}{cc{}}{{{b{{Gh{c}}}}{b{c}}}{{El{{Gn{Hb}}}}}{GbGdG`}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{H`}}}{{Gh{c}}}{GbGdG`}}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<<<1<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{H`}}{b{Aj}}Bf{El{Hd}}}{{Bj{HfBh}}}}3{{{b{H`}}}{{b{Af}}}}4{{}H`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}{{{b{H`}}{b{H`}}}Bf}{{b{b{c}}}Bf{}}0008{{bC`}{{j{{b{c}}}}}{}}{{{b{H`}}{b{nCb}}}Cd}{cc{}}={{}Bl}{{}Af}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}H`}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999{{{b{Hh}}}{{b{Hj}}}}`````````````````````````````````````````````{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<555444<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00>>>{Blf}00333{{bC`}{{j{{b{c}}}}}{}}00{{{b{Bh}}{b{nCb}}}Cd}0{{{b{Hl}}{b{nCb}}}Cd}0{{{b{Hn}}{b{nCb}}}Cd}0{I`Bh}{IbBh}{IdBh}{IfBh}{IhBh}{IjBh}{IlBh}{cc{}}{HnBh}{InBh}{HlBh}{J`Bh}{{{Ef{Jb}}}Bh}{JdBh}66{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}65432103240156{{}c{}}00999999999999{{{b{Jf}}}Bh}:::::::::::::::::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}00;;;;;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}00<<<<<<`<<<{{bFf}{{j{{b{c}}}}}{}}00=========111{{{b{Bh}}}{{El{{b{Jh}}}}}}>>>{bJj}00{bJl}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00==={{bFl}{{j{{b{c}}}}}{}}00333333333`````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{In}}{b{nCb}}}Cd}0{cc{}};{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{JlIn}111111111111=1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{{Jn{b{Hj}}}{{Fb{c}}}{}}{bJj}{bJl}{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}9{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}<<<```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00`????????????555444???????????????????????????```???{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{b{b{nc}}}f{}}00{bf}00{{{b{K`}}{b{K`}}}Ad}{{{b{Kd}}{b{Kd}}}Ad}{{b{b{c}}}Ad{}}0{b{{j{{b{c}}}}}{}}00000{{}K`}{{}Kd}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00{c{{Bj{K`}}}Bn}{c{{Bj{Kb}}}Bn}{c{{Bj{Kd}}}Bn}777{Blf}00`{{{b{K`}}{b{K`}}}Bf}{{{b{Kb}}{b{Kb}}}Bf}{{{b{Kd}}{b{Kd}}}Bf}{{b{b{c}}}Bf{}}00000000000``{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nCb}}}Cd}{{{b{Kb}}{b{nCb}}}Cd}{{{b{Kd}}{b{nCb}}}Cd}{cc{}}00{Kb{{Bj{KdBh}}}}{b{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nc}}}fEd}{{{b{Kd}}{b{nc}}}fEd}{{}Bl}00{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}50124360634215{{}c{}}00;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00======{{{b{K`}}{b{K`}}}{{El{Ad}}}}{{{b{Kd}}{b{Kd}}}{{El{Ad}}}}``???{{bFf}{{j{{b{c}}}}}{}}00``{b{{j{{b{c}}}}}{}}00000``000``444`{{{b{K`}}c}BjFh}{{{b{Kb}}c}BjFh}{{{b{Kd}}c}BjFh}333{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00777{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00???{{bFl}{{j{{b{c}}}}}{}}00:::::::::```{{bd}f}{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00============555444=============================={{{b{Kf}}}Kf}{{b{b{nc}}}f{}}{bf}{b{{j{{b{c}}}}}{}}00000{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00222{Blf}00{{{b{nKf}}}f}888{{{b{Hb}}{b{Kh}}}Kj}{{{b{Gl}}{b{Kh}}}{{Bj{KjBh}}}}{{{b{Kf}}{b{Kh}}Bf}{{Fb{Kj}}}}{{{b{Hb}}{b{Hj}}}{{El{Kj}}}}{{{b{Gl}}{b{Hj}}}{{El{Kj}}}}{{{b{Kf}}{b{Hj}}}{{El{Kj}}}}{{bC`}{{j{{b{c}}}}}{}}00{{{b{Hb}}{b{nCb}}}Cd}{{{b{Gl}}{b{nCb}}}Cd}{{{b{Kf}}{b{nCb}}}Cd}{cc{}}00{{HfA`}{{Bj{HbBh}}}}{{HfA`}{{Bj{GlBh}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}32106450321564{{}c{}}00999{{{b{Hb}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}??????{{{b{Fd}}}{{Fb{Kf}}}}{b{{j{{b{c}}}}}{}}00000{{{b{Hb}}}{{b{Ah}}}}{{Kn{B`{AlAn}}L`}Gl}{{{b{Aj}}{b{Lb}}A`}{{Fb{Kf}}}}333333333333333333333333333333333333{{bC`}{{j{{b{c}}}}}{}}00444444444444{{bC`C`C`}{{j{{b{c}}}}}{}}00555555555{{{b{Hb}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}00777777777222{{{b{Kf}}D`{b{{Dd{D`}}}}Dl{El{Ld}}c}{{Fb{Kd}}}Kl}{{{b{nKf}}c}{{Fb{f}}}{{Lf{Fd}}}}999{bc{}}{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00==={b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000`{{bh}{{j{{b{c}}}}}{}}`{{bl}{{j{{b{c}}}}}{}}222265222222222222`{{}Bb}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}```4{{bC`}{{j{{b{c}}}}}{}}{{{b{Bb}}{b{nCb}}}Cd}{cc{}}`{{{b{Bb}}}{{El{{b{c}}}}}Lh}{{{b{nBb}}}{{El{{b{nc}}}}}Lh}{{{b{nBb}}e}{{b{nc}}}Lh{{Ll{}{{Lj{c}}}}}}<{{}Bl}{{{b{nBb}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}Bb}111111111111{{bC`}{{j{{b{c}}}}}{}}2222{{bC`C`C`}{{j{{b{c}}}}}{}}333{{bFf}{{j{{b{c}}}}}{}}4`4{{{b{nBb}}}{{El{c}}}Lh}52`5`{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}8{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}};{{bFl}{{j{{b{c}}}}}{}};;;```{{bd}f}0{{{b{nLn}}M`}f}{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0????????6655????????????????????{{{b{M`}}}M`}{{{b{Ln}}}Ln}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}000{{}Ln}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}033{Blf}0{{{b{M`}}{b{M`}}}Bf}{{b{b{c}}}Bf{}}000;;{{bC`}{{j{{b{c}}}}}{}}0{{{b{M`}}{b{nCb}}}Cd}{{{b{Ln}}{b{nCb}}}Cd}{cc{}}0::{{{b{Ln}}{b{M`}}}Bf}{{{b{M`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}4123056{{}c{}}0{b{{j{{b{c}}}}}{}}000000000{{{b{Ln}}{b{Mb}}Md{b{Bb}}{b{M`}}}{{Bj{fBh}}}}111111111111111111111111{{bC`}{{j{{b{c}}}}}{}}022222222{{bC`C`C`}{{j{{b{c}}}}}{}}0333333{{bFf}{{j{{b{c}}}}}{}}04444441144{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}088{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0;;{{bFl}{{j{{b{c}}}}}{}}0;;;;;;```{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}====43{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{f}}}}>>>>>>>>>>>>{{{b{Mf}}{b{Mb}}Md}{{Fb{f}}}}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}{b{Hj}}Md}{{Fb{f}}}}{{}Mf}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{b{{j{{b{c}}}}}{}}{Blf}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhBlMd}{{Fb{f}}}}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Mf}}{b{nCb}}}Cd}{cc{}}5{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}>>>>>>>>>>>>>>>>>;>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{f}}}}000000{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0{{{b{Mf}}{b{Mj}}}f}141{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}4{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999943999999999999{{}Ml}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Ml}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}222254222222222222{{}Mn}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Mn}}{b{nCb}}}Cd}{cc{}}9{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000000000000000<0000{{bC`C`C`}{{j{{b{c}}}}}{}}111{{bFf}{{j{{b{c}}}}}{}}22212{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}5{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}888`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{{}N`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}={Blf}4{{bC`}{{j{{b{c}}}}}{}}{cc{}}{{{b{N`}}{b{Jf}}}{{El{{b{{Eb{Jf}}}}}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1{{{b{nN`}}{b{Jf}}{b{{Dd{Jf}}}}}f}<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00```````{{bd}f}00`{{bh}{{j{{b{c}}}}}{}}000{{bl}{{j{{b{c}}}}}{}}0003333333333333333666655553333333333333333333333333333333333333333{{{b{L`}}}L`}{{{b{Nb}}}Nb}{{{b{Hd}}}Hd}{{b{b{nc}}}f{}}00{bf}0088888888{{}L`}{{}Hd}{Bl{{b{c}}}{}}000{Bl{{b{nc}}}{}}000<<<<{Blf}000{{{b{L`}}{b{L`}}}Bf}{{{b{Nb}}{b{Nb}}}Bf}{{{b{Ij}}{b{Ij}}}Bf}{{b{b{c}}}Bf{}}00000000000>>>>{{bC`}{{j{{b{c}}}}}{}}000{{{b{L`}}{b{nCb}}}Cd}{{{b{Nb}}{b{nCb}}}Cd}{{{b{Hd}}{b{nCb}}}Cd}{{{b{Ij}}{b{nCb}}}Cd}0{cc{}}00{NdIj}{NfIj}2``{{{b{L`}}NhNj}{{El{Dl}}}}{{{b{L`}}Nh}{{Eb{{F`{DlNj}}}}}}{{{b{L`}}{b{Kh}}{El{Dl}}}{{Bj{DlIj}}}}{b{{j{{b{c}}}}}{}}000{{{b{Nb}}{b{nc}}}fEd}{{}Bl}000{{{b{L`}}{b{Kh}}}{{El{Dl}}}}{{{b{L`}}}{{Fb{{Nl{Dl{Nl{DlDl}}}}}}}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}156042315602431436052{{}c{}}000<<<<<<<<``<<<<<<<<<<<<{{{b{Aj}}{El{Hd}}}{{Bj{L`Ij}}}}================================================{{bC`}{{j{{b{c}}}}}{}}000>>>>>>>>>>>>>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}000????????????{{bFf}{{j{{b{c}}}}}{}}000{b{{j{{b{c}}}}}{}}000000000002222{{{b{Ij}}}{{El{{b{Jh}}}}}}1111{bc{}}00{bJj}{bJl}{c{{Bj{e}}}{}{}}000{{}{{Bj{c}}}{}}000{bFj}0007777{b{{b{c}}}{}}000{{{b{n}}}{{b{nc}}}{}}000>>>>{{bFl}{{j{{b{c}}}}}{}}000::::::::::::``{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}<<<<43<<<<<<<<<<<<{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}>{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Nn}}{b{nCb}}}Cd}{{{b{Af}}MhMd}{{Bj{O`Ib}}}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{Af}}{b{Ah}}}Nn}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Af}}MhMhMd}{{Bj{O`Ib}}}}==2={c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{{}Ob}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Mh{El{Mh}}Md}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}1{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Mh}}}}={Blf}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Ob}}{b{nCb}}}Cd}{cc{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Od}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}0{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}2100==============={{bC`}{{j{{b{c}}}}}{}}>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0020{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}3{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MdMhMhMh}{{Fb{Od}}}}>{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999954999999999999{{{b{Of}}}Mh}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Of}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{Mh{b{Mb}}}Of}::::::::::::=::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Of}}}Oh}=={{{b{Of}}}{{El{Oh}}}}3{{{b{nOf}}{b{Mb}}}f}?{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Hf}}{b{nCb}}}Cd}{cc{}}{{{b{Hf}}}{{El{{b{c}}}}}Lh}<{{}Bl}{{{b{nHf}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{Hf}}}{{b{Bb}}}}{{{b{Hf}}}{{b{Ah}}}}{{Ah{B`{AlAn}}Bb}Hf}333333333333{{bC`}{{j{{b{c}}}}}{}}4444{{bC`C`C`}{{j{{b{c}}}}}{}}555{{{b{Hf}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}77{{{b{nHf}}}{{El{c}}}Lh}838{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj};{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}>{{bFl}{{j{{b{c}}}}}{}}>>>`````````````````{{bd}f}000000000```{{bh}{{j{{b{c}}}}}{}}00000000000{{bl}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000````000000000000000000000000666666666666555555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{n{Ol{Oj}}}}{b{Oj}}{b{{Ol{Oj}}}}}f}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}`````{{{b{nKl}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}444444444444{{{b{Oj}}}Oj}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{b{b{nc}}}f{}}000000000{bf}000000000{{{b{A@b}}{b{A@b}}}Ad}{{{b{A@d}}{b{A@d}}}Ad}{{{b{A@f}}{b{A@f}}}Ad}{{{b{A@h}}{b{A@h}}}Ad}{{{b{A@j}}{b{A@j}}}Ad}{{{b{A@l}}{b{A@l}}}Ad}{{{b{A@n}}{b{A@n}}}Ad}{{b{b{c}}}Ad{}}000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{}A@b}{{}AA`}{{}AAb}{{{b{nKl}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00000000000{Bl{{b{nc}}}{}}00000000000{c{{Bj{A@b}}}Bn}{c{{Bj{A@d}}}Bn}{c{{Bj{A@f}}}Bn}{c{{Bj{A@h}}}Bn}{c{{Bj{A@j}}}Bn}{c{{Bj{A@l}}}Bn}{c{{Bj{A@n}}}Bn}{c{{Bj{AA`}}}Bn}{c{{Bj{AAb}}}Bn}{b{{j{{b{c}}}}}{}}00000000000{Blf}00000000000{{{b{nKl}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}``{{{b{A@b}}{b{A@b}}}Bf}{{{b{A@d}}{b{A@d}}}Bf}{{{b{A@f}}{b{A@f}}}Bf}{{{b{A@h}}{b{A@h}}}Bf}{{{b{A@j}}{b{A@j}}}Bf}{{{b{A@l}}{b{A@l}}}Bf}{{{b{A@n}}{b{A@n}}}Bf}{{{b{AA`}}{b{AA`}}}Bf}{{{b{AAb}}{b{AAb}}}Bf}{{b{b{c}}}Bf{}}00000000000000000000000000000000000`{{bl}{{j{{b{c}}}}}{}}00000000000{{bC`}{{j{{b{c}}}}}{}}00000000000{{{b{{Ol{c}}}}{b{nCb}}}CdGf}{{{b{Oj}}{b{nCb}}}Cd}{{{b{A@b}}{b{nCb}}}Cd}{{{b{A@d}}{b{nCb}}}Cd}{{{b{A@f}}{b{nCb}}}Cd}{{{b{A@h}}{b{nCb}}}Cd}{{{b{A@j}}{b{nCb}}}Cd}{{{b{A@l}}{b{nCb}}}Cd}{{{b{A@n}}{b{nCb}}}Cd}{{{b{AA`}}{b{nCb}}}Cd}{{{b{AAb}}{b{nCb}}}Cd}{cc{}}00000000000{{{b{nKl}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nKl}}D`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}{b{nDl}}}{{On{A@d}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@d}}}}{{{b{nKl}}{b{nDl}}}{{On{A@f}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00000000000{{{b{A@b}}{b{nc}}}fEd}{{{b{A@d}}{b{nc}}}fEd}{{{b{A@f}}{b{nc}}}fEd}{{{b{A@h}}{b{nc}}}fEd}{{{b{A@j}}{b{nc}}}fEd}{{{b{A@l}}{b{nc}}}fEd}{{{b{A@n}}{b{nc}}}fEd}{{{b{AA`}}{b{nc}}}fEd}{{{b{AAb}}{b{nc}}}fEd}`{{}Bl}00000000000{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}12436502561304016453212650345124306305162440561236320541150634251634203654210{{}c{}}00000000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{{b{nKl}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nA@`}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}444444444444`444444444444444444444444````{{E`E`E`E`Bf}AA`}{{E`E`E`E`Bf}AAb}```666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666{{bC`}{{j{{b{c}}}}}{}}00000000000777777777777777777777777777777777777777777777777{{bC`C`C`}{{j{{b{c}}}}}{}}00000000000888888888888888888888888{{{b{A@b}}{b{A@b}}}{{El{Ad}}}}{{{b{A@d}}{b{A@d}}}{{El{Ad}}}}{{{b{A@f}}{b{A@f}}}{{El{Ad}}}}{{{b{A@h}}{b{A@h}}}{{El{Ad}}}}{{{b{A@j}}{b{A@j}}}{{El{Ad}}}}{{{b{A@l}}{b{A@l}}}{{El{Ad}}}}{{{b{A@n}}{b{A@n}}}{{El{Ad}}}}`????????????`{{bFf}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000{{{b{nKl}}D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{f}}}}222222222222``;;;;;;;;;;;;{{{b{nKl}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}`{{{b{A@b}}c}BjFh}{{{b{A@d}}c}BjFh}{{{b{A@f}}c}BjFh}{{{b{A@h}}c}BjFh}{{{b{A@j}}c}BjFh}{{{b{A@l}}c}BjFh}{{{b{A@n}}c}BjFh}{{{b{AA`}}c}BjFh}{{{b{AAb}}c}BjFh}{{{b{nKl}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}```{{{b{nKl}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}DjD`D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00000000000`{bc{}}000000000``{c{{Bj{e}}}{}{}}00000000000{{}{{Bj{c}}}{}}00000000000``{bFj}00000000000444444444444`{b{{b{c}}}{}}00000000000{{{b{n}}}{{b{nc}}}{}}00000000000``{{}c{}}00000000000{{bFl}{{j{{b{c}}}}}{}}00000000000888888888888888888888888````888888888888```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00{AAdA@b}<<<<<<<<<<<<777666<<<<<<<<<<<<<<<<<<<<<<<<<<<{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}>>>{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{b{b{nc}}}f{}}00{bf}00{b{{j{{b{c}}}}}{}}00000`{{{b{{Dd{D`}}}}}Jl}{{}AAf}{{}AAj}{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00666{Blf}00{{{b{n{b{nAAf}}}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{Hj}}}{{Eb{D`}}}}```{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{AAf}}{b{nCb}}}Cd}{{{b{AAh}}{b{nCb}}}Cd}{{{b{AAj}}{b{nCb}}}Cd}{cc{}}00{{{b{n{b{nAAf}}}}Dl{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@d}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}32416052341605{{}c{}}00999999{{{b{n{b{nAAf}}}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}``{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}};;;`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00========={{bFf}{{j{{b{c}}}}}{}}00>>>>>>{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{f}}}}???222{{{b{n{b{nAAf}}}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{n{b{nAAf}}}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}`{{{b{n{b{nAAf}}}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{A@bAAl}555{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00999999999`````{{bd}f}0`{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0`<<<<<<<<6655<<<<<<<<<<<<<<<<<<{{{b{Fd}}}{{AAn{{Gn{Aj}}}}}}=={{{b{Ld}}}Ld}{{{b{Jd}}}Jd}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}0`{{{b{Ah}}{b{Bb}}A`}Mj}11{c{{`{Gf}}}{{AB`{{b{nCb}}}{{Lj{Cd}}}}}}{{{b{{Dd{C`}}}}}Jl}{{}Ld}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ld}}}Bn}77{Blf}0`{{{b{Jd}}{b{Jd}}}Bf}{{b{b{c}}}Bf{}}000{cD`{{Cn{ABb}}}}{{{b{Hj}}}D`}0{{bl}{{j{{b{c}}}}}{}}0{{{b{Aj}}{b{Hj}}}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}Bl}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}{b{Hj}}}{{El{{b{Kh}}}}}}{{bC`}{{j{{b{c}}}}}{}}0{{{b{Ld}}{b{nCb}}}Cd}{{{b{Jd}}{b{nCb}}}Cd}0{cc{}}0{{{b{Kh}}Bf}{{ABf{Hj}}}}{DjABh}{b{{j{{b{c}}}}}{}}0{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}3012456{{}c{}}09999{{{b{ABh}}Bl}{{Bj{{F`{ABhBl}}Jd}}}}::::::``::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}0;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}0<<<<{{{b{ABh}}Bl}Bl}``=={{bFf}{{j{{b{c}}}}}{}}0>>>>{{{b{Mj}}}f}??33{{{b{Af}}{b{nAh}}}{{Bj{fIb}}}}{{{b{Ld}}c}BjFh}{b{{j{{b{c}}}}}{}}0{bc{}}0{bJj}{bJl}{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}066{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0{{}c{}}0{{bFl}{{j{{b{c}}}}}{}}0::::::{{}f}","D":"L@nKKj","p":[[1,"reference"],[5,"Private",4722],[1,"unit"],[6,"Attribute",4723],[5,"Painted",4724],[6,"Color",4725],[0,"mut"],[6,"OptLevel",0,4726],[6,"Value",0,4727],[6,"Ordering",4728],[5,"Context",4729],[5,"Module",4730],[5,"Program",4731],[6,"CoreType",4732],[6,"CoreLibfunc",4732],[5,"ProgramRegistry",4733],[5,"MetadataStorage",1602],[5,"Attribute",4734],[1,"bool"],[6,"Error",624],[6,"Result",4735],[1,"usize"],[10,"Deserializer",4736],[1,"u8"],[5,"Formatter",4737],[8,"Result",4737],[1,"i128"],[1,"i16"],[1,"i8"],[1,"array"],[10,"Into",4738],[5,"Felt",4739],[1,"i32"],[1,"slice"],[10,"Clone",4740],[1,"u16"],[1,"u32"],[1,"u64"],[1,"i64"],[1,"u128"],[5,"Vec",4741],[10,"Hasher",4742],[5,"Box",4743],[6,"RewriteResult",4744],[5,"VecDeque",4745],[6,"Option",4746],[5,"OrderedHashMap",4747],[1,"tuple"],[8,"Result",624],[5,"Path",4748],[6,"Quirk",4723],[10,"Serializer",4749],[5,"TypeId",4750],[5,"Condition",4751],[6,"ProgramCache",262],[10,"PartialEq",4728],[10,"Eq",4728],[10,"Hash",4742],[10,"Debug",4737],[5,"JitProgramCache",437],[5,"AotProgramCache",352],[5,"AotNativeExecutor",1329,4752],[5,"Arc",4753],[5,"NativeContext",523],[5,"JitNativeExecutor",1329,4754],[5,"MetadataComputationConfig",2232],[5,"NativeModule",2886],[6,"CoreConcreteLibfunc",4732],[1,"str"],[6,"SierraAssertError",624],[6,"CompilerError",624],[5,"LayoutError",4755],[6,"Error",4756],[5,"Error",4757],[6,"Error",4758],[5,"Error",4759],[6,"GasMetadataError",2232],[6,"EditStateError",4760],[5,"NativeAssertError",932],[5,"TryFromIntError",4761],[6,"ProgramRegistryError",4733],[5,"LayoutError",4509],[5,"ConcreteTypeId",4762],[10,"Error",4763],[5,"SmolStr",4764],[5,"String",4765],[10,"ToNativeAssertError",932],[5,"BuiltinStats",1020],[5,"ExecutionResult",1020],[5,"ContractExecutionResult",1020],[5,"AotContractExecutor",1329,4766],[5,"FunctionId",4762],[6,"c_void",4767],[10,"StarknetSyscallHandler",2975],[5,"Library",4768],[5,"GasMetadata",2232],[5,"ContractEntryPoints",4769],[5,"BuiltinCosts",4509],[10,"AsRef",4738],[10,"Any",4750],[17,"Output"],[10,"FnOnce",4770],[5,"AutoBreakpoint",1700],[6,"BreakpointEvent",1700],[5,"Block",4771],[5,"Location",4772],[5,"DebugUtils",1887],[5,"Value",4773],[5,"ExecutionEngine",4774],[5,"DropOverridesMeta",1982],[5,"DupOverridesMeta",2065],[5,"EnumSnapshotVariantsMeta",2148],[5,"GasCost",2232],[6,"ApChangeError",4775],[6,"CostError",4776],[5,"StatementIdx",4731],[6,"CostTokenType",4777],[5,"BTreeMap",4778],[5,"ReallocBindingsMeta",2614],[5,"Operation",4779],[5,"RuntimeBindingsMeta",2699],[5,"OperationRef",4779],[5,"TailRecursionMeta",2799],[5,"BlockRef",4771],[5,"Felt252Abi",2975],[5,"ArrayAbi",2975],[8,"SyscallResult",2975],[5,"DummySyscallHandler",2975],[5,"U256",2975],[5,"ExecutionInfo",2975],[5,"ExecutionInfoV2",2975],[5,"TxV2Info",2975],[5,"ResourceBounds",2975],[5,"BlockInfo",2975],[5,"TxInfo",2975],[5,"Secp256k1Point",2975],[5,"Secp256r1Point",2975],[5,"BigInt",4780],[5,"StubSyscallHandler",4209],[5,"StubEvent",4209],[5,"ContractLogs",4209],[5,"BigUint",4781],[8,"Result",4782],[10,"Fn",4770],[5,"BigInt",4783],[5,"GenFunction",4731],[6,"Cow",4784],[5,"Layout",4755],[15,"Struct",251],[15,"Enum",251],[15,"Felt252Dict",251],[15,"BoundedInt",251],[15,"IntRange",251],[15,"BoundedIntOutOfRange",929],[15,"Range",931],[15,"EnumInit",1885],[15,"NotEnoughGas",2613]],"r":[[14,4726],[28,4727],[76,4785],[164,4726],[167,4726],[263,352],[265,437],[1329,4766],[1330,4752],[1331,4754]],"b":[[113,"impl-From%3Cu8%3E-for-OptLevel"],[114,"impl-From%3Cusize%3E-for-OptLevel"],[116,"impl-From%3Ci128%3E-for-Value"],[118,"impl-From%3Ci16%3E-for-Value"],[119,"impl-From%3Ci8%3E-for-Value"],[120,"impl-From%3C%5BT;+N%5D%3E-for-Value"],[121,"impl-From%3CFelt%3E-for-Value"],[122,"impl-From%3Ci32%3E-for-Value"],[123,"impl-From%3C%26%5BT%5D%3E-for-Value"],[124,"impl-From%3Cu8%3E-for-Value"],[125,"impl-From%3Cu16%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu64%3E-for-Value"],[128,"impl-From%3Ci64%3E-for-Value"],[129,"impl-From%3Cu128%3E-for-Value"],[130,"impl-From%3CVec%3CT%3E%3E-for-Value"],[295,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[296,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[739,"impl-Display-for-Error"],[740,"impl-Debug-for-Error"],[741,"impl-Display-for-SierraAssertError"],[742,"impl-Debug-for-SierraAssertError"],[743,"impl-Debug-for-CompilerError"],[744,"impl-Display-for-CompilerError"],[745,"impl-From%3CLayoutError%3E-for-Error"],[746,"impl-From%3CError%3E-for-Error"],[747,"impl-From%3CError%3E-for-Error"],[748,"impl-From%3CError%3E-for-Error"],[749,"impl-From%3CError%3E-for-Error"],[750,"impl-From%3CGasMetadataError%3E-for-Error"],[751,"impl-From%3CEditStateError%3E-for-Error"],[753,"impl-From%3CCompilerError%3E-for-Error"],[754,"impl-From%3CNativeAssertError%3E-for-Error"],[755,"impl-From%3CSierraAssertError%3E-for-Error"],[756,"impl-From%3CTryFromIntError%3E-for-Error"],[757,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[758,"impl-From%3CLayoutError%3E-for-Error"],[960,"impl-Debug-for-NativeAssertError"],[961,"impl-Display-for-NativeAssertError"],[2376,"impl-Display-for-GasMetadataError"],[2377,"impl-Debug-for-GasMetadataError"],[2381,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[2382,"impl-From%3CCostError%3E-for-GasMetadataError"],[4596,"impl-Display-for-LayoutError"],[4597,"impl-Debug-for-LayoutError"]],"c":"OzAAAAEAAC8AFwBDAAEAHgEAAHMBAADIAQAAHgIAAMkCAgC4AwAAOgQCAGkFAgBWBgAAzQYBAHMHAADRBwAAJAgAAHcIAAAICQMASQoAAJ4KAAACCwAAWQsAAJcMCwCuEAIAyhEBAA==","e":"OzAAAAEAAI4GHwEBAAAAAwAKABAADAAeAAEALAADAEIAAABFAAcAUAAAAFMABgBdAAsAagAAAHAAAwB1AAAAdwAMAIYAEACkAAAA0QAAAN4AAADjAAcA7QADAPIAAQD8ABAAEwEBACEBAQAkAQAAJwECACwBBwA3AQAAVgECAFoBAgBhAQAAaAEBAHQBAAB3AQEAegEAAH0BAAB/AQAAgQEHAI8BAACrAQIArwECAL0BAQDJAQAAywEAAM0BAQDQAQAA0wEAANUBAADXAQcA5QEAAAECAgAFAgIAEwIBACECAAAjAgIAJwIFAC8CAAAyAgAANAIGAEECAABdAgIAYQICAGgCAABxAgcAegIQAIwCCQCoAgUA0gIFANsCAgDkAgwA8gIFAP0CFwAkAwAAdwMAAHsDDgCNAwgAogMCAK0DAQC7AwEAvgMAAMEDAQDFAwcA0wMAAO8DBQD2AwIA/QMAAAAEAgAJBAAAFgQFADcEAgA9BAwAUAQKAF4EFAB5BAIAgwQZAOsEAwD1BAEA/QQBAAIFAQAHBQMADgULAB0FCAAzBQAANQUAAEgFBQBsBQIAdQUFAH4FAwCFBQUAjgUCAJQFAACZBRcAtwUBALoFAAC8BQAAygUBAAwGAAAhBgkALgYIAEUGAABLBgEAWgYCAF4GAABhBgAAZAYAAGYGAABpBgAAawYAAG0GBgCaBgIAngYCAKUGBQC3BgMAzwYFANkGBADgBgYA6wYBAPEGEQAPBwAARgcHAFAHBQBeBwIAZwcCAHYHAAB4BwIAfAcAAIAHAACDBwcApgcGALAHAAC0BwIAuAcCAL8HAADGBwEA1AcCANgHAADbBwAA3gcHAAcIAgALCAIAEggAABkIAQAnCAIAKwgAAC4IAAAxCAcAWggCAF4IAgBlCAAAbAgBAHoIAgB+CAAAgggAAIQIBwCsCAAArggCALIIAgC5CAIAvwgEANwIBwAMCQgAHQkJACsJEgBGCQQATgkBAFEJAwBaCSIAiQkBAJcJAAAACgAABQoQABoKCwA2CgAAPgoBAEwKAQBPCgAAUgoAAFYKBwCBCgIAhQoCAJMKAQChCgIAqwoAAK4KAACwCgAAsgoHAMMKAADkCgIA6AoBAOsKAAD3CgEABgsBAAkLAAAMCwAADwsHADwLAgBACwIATgsBAFwLAQBfCwAAYgsAAGYLAABoCwYAdQsCAI0LAACVCwIAmQsCAKALAgCkCwEAqAsHALELDADuCwMACgwXAI8MBwCjDCsA2wwBAOkMJQAbDT0AcQ0KAIgNBwCcDWkAHg4BACwOAwA8DgAAVQ4IAE4PBwBiDwAAhw8BAJUPAQCjDygA2A8yABcQJgBiEAMAchAAAHUQAgB+EAAAixAFAKwQAQCxEAgAwBAKAM4QBwDcEAIA4hADAOkQFwAKEQMAEREAAGARAABnEQ4AeREMAIkRCACeEQIAohEDAKoRAACzEQMAzBEFANQRAADaEQUA4hEHAPQRAgD9EQ8AGhIBAEUSAQBPEgAAVBIBAFgSCQBkEgUAchIAAA=="}],["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","output_library","output_mlir","path","primary","","quirk","","rapid_blink","","red","","replace_ids","resetting","","rgb","","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_compile"],[190,"dyn_clone::sealed"],[191,"yansi::attr_quirk"],[192,"yansi::paint"],[193,"clap_builder::builder::command"],[194,"yansi::color"],[195,"core::fmt"],[196,"clap_builder::parser::matches::arg_matches"],[197,"clap_builder"],[198,"core::result"],[199,"clap_builder::util::id"],[200,"core::option"],[201,"cairo_lang_utils::ordered_hash_map"],[202,"cairo_lang_semantic::substitution"],[203,"alloc::vec"],[204,"alloc::collections::vec_deque"],[205,"alloc::boxed"],[206,"anyhow"],[207,"clap_builder::builder::possible_value"],[208,"core::any"],[209,"yansi::condition"]],"i":"Ab`0`0Al1000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`10101010101010101010101010101010101010101000001010101001010010111010101010100011010101010","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}4306215{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333````33{{bCf}{{j{{b{c}}}}}{}}04444`4411`44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????","D":"A@d","p":[[1,"reference"],[5,"Private",190],[1,"unit"],[6,"Attribute",191],[5,"Painted",192],[5,"Command",193],[6,"Color",194],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",195],[8,"Result",195],[5,"Args",0],[5,"ArgMatches",196],[8,"Error",197],[6,"Result",198],[5,"Id",199],[6,"Option",200],[5,"OrderedHashMap",201],[6,"RewriteResult",202],[5,"Vec",203],[5,"VecDeque",204],[5,"Box",205],[1,"tuple"],[8,"Result",206],[6,"Quirk",191],[5,"PossibleValue",207],[5,"TypeId",208],[1,"slice"],[5,"Condition",209]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADwADQAAAAEAAwACAAkAAQAVAAMALQAEADYAAwA8AAEAQgABAEYAAQBKABAAZQAAAKQABwCuAAgA"}],["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","input","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","load_program","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","parse_input","parse_output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","starknet","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_dump"],[192,"dyn_clone::sealed"],[193,"yansi::attr_quirk"],[194,"yansi::paint"],[195,"clap_builder::builder::command"],[196,"yansi::color"],[197,"core::fmt"],[198,"clap_builder::parser::matches::arg_matches"],[199,"clap_builder"],[200,"core::result"],[201,"clap_builder::util::id"],[202,"core::option"],[203,"cairo_lang_semantic::substitution"],[204,"alloc::vec"],[205,"alloc::collections::vec_deque"],[206,"cairo_lang_utils::ordered_hash_map"],[207,"alloc::boxed"],[208,"std::path"],[209,"cairo_lang_sierra::program"],[210,"core::error"],[211,"alloc::string"],[212,"core::any"],[213,"yansi::condition"]],"i":"``Ad0Ab1010001010101010101010101010101010101010101010001010101010101010101000100100000000111111101010101`01`0101010101010101010101010101010101010101010``01010101010100101010101010101000101010101","f":"````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}07777{Af{{b{c}}}{}}0{Af{{b{A`c}}}{}}099{Aff}0;;{{bAh}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Aj}}}Al}{{{b{Ad}}{b{A`Aj}}}Al}{cc{}}0{{{b{An}}}{{Bb{AbB`}}}}{{{b{A`An}}}{{Bb{AbB`}}}}{b{{j{{b{c}}}}}{}}0{{}{{Bf{Bd}}}}{{}Af}0`{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Bj{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bn{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{c}}}}}{{Bb{Bhe}}}{}{}}4635210{{}c{}}0::::::{{{b{Cd}}Cf}{{Bb{Ch{Cb{Cj}}}}}};;{{}{{Bb{f{Cb{Cj}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<{{bAh}{{j{{b{c}}}}}{}}0========{{bAhAhAh}{{j{{b{c}}}}}{}}0>>>>`{{{b{Cl}}}{{Bb{CnD`}}}}{{{b{Cl}}}{{Bb{AdD`}}}}{b{{j{{b{c}}}}}{}}0{{bDb}{{j{{b{c}}}}}{}}011111144`11{bc{}}0{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bDd}055{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Ab}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Ab}}{b{A`An}}}{{Bb{fB`}}}}{{}c{}}0{{bDf}{{j{{b{c}}}}}{}}0;;;;;;","D":"Of","p":[[1,"reference"],[5,"Private",192],[1,"unit"],[6,"Attribute",193],[5,"Painted",194],[5,"Command",195],[6,"Color",196],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[1,"u8"],[5,"Formatter",197],[8,"Result",197],[5,"ArgMatches",198],[8,"Error",199],[6,"Result",200],[5,"Id",201],[6,"Option",202],[6,"RewriteResult",203],[5,"Vec",204],[5,"VecDeque",205],[1,"tuple"],[5,"OrderedHashMap",206],[5,"Box",207],[5,"Path",208],[1,"bool"],[5,"Program",209],[10,"Error",210],[1,"str"],[5,"PathBuf",208],[5,"String",211],[6,"Quirk",193],[5,"TypeId",212],[5,"Condition",213]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAAEUADgAAAAYACQABABUAAwAtAAcAOQADAD8AAQBFAAEASQABAE0AEQBnAAAAagAAAJUAAgCnAAcAsQAHAA=="}],["cairo_native_run",{"t":"PFPGNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNCNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","available_gas","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","path","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","run_mode","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_run"],[190,"cairo_native_run::utils"],[369,"cairo_native_run::utils::test"],[624,"dyn_clone::sealed"],[625,"yansi::attr_quirk"],[626,"yansi::paint"],[627,"clap_builder::builder::command"],[628,"yansi::color"],[629,"core::fmt"],[630,"clap_builder::parser::matches::arg_matches"],[631,"clap_builder"],[632,"core::result"],[633,"clap_builder::util::id"],[634,"core::option"],[635,"alloc::vec"],[636,"cairo_lang_semantic::substitution"],[637,"alloc::collections::vec_deque"],[638,"alloc::boxed"],[639,"cairo_lang_utils::ordered_hash_map"],[640,"anyhow"],[641,"clap_builder::builder::possible_value"],[642,"core::any"],[643,"yansi::condition"],[644,"cairo_lang_sierra::program"],[645,"starknet_types_core::felt"],[646,"alloc::vec::into_iter"],[647,"alloc::string"],[648,"cairo_native::values"],[649,"cairo_native::execution_result"],[650,"cairo_lang_runner"],[651,"cairo_lang_test_plugin"],[652,"scarb_metadata"],[653,"cairo_lang_test_plugin::test_config"],[654,"cairo_lang_sierra::ids"],[655,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ab`0`0Al10000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`1010101010101010101010101010101010101010100010101010101000101110101010101000`11010101010D`0``0Ff1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fh0```EdFj2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0`{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}3460125{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333``33{{bCf}{{j{{b{c}}}}}{}}044444411``44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}`{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000998800000000000000000000{{{b{D`}}}D`}{{b{b{A`c}}}f{}}{bf}3333{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}055{Adf}077{{{b{Db}}{b{Dd}}}{{Cd{{b{Df}}}}}}{{bAf}{{j{{b{c}}}}}{}}0{{{b{D`}}{b{A`Ah}}}Aj}{{{Dj{Dh}}}Dl}{cc{}}0;;{{}Ad}0{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}5210346{{}c{}}0{b{{j{{b{c}}}}}{}}000{{{b{Dn}}}{{Bh{Dh}}}}111111111111111111111111111111>>11111111{{bAfAfAf}{{j{{b{c}}}}}{}}02222`22{{bCf}{{j{{b{c}}}}}{}}0333333{{{b{E`}}}{{Cd{Eb}}}}22`44`{bc{}}{{{b{D`}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Cl{D`}}}}}}=={{bCn}{{j{{b{c}}}}}{}}0======`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{b{c}}}{}}00{Ad{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{Ed}}Ad}f}{Adf}00``555{{EfEhEhDl}{{Cb{EfAd}}}}{{{b{Ej}}}{{Bh{{b{El}}}}}}{{bAf}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}36145024532106{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAfAfAf}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bCf}{{j{{b{c}}}}}{}}00111111111222{{{Bh{{Cb{DlEn}}}}Db{C`{F`{C`{FbFd}}}}Ff}{{Cd{Ed}}}}`222{c{{Bb{e}}}{}{}}00{{}{{Bb{c}}}{}}00{bCj}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bCn}{{j{{b{c}}}}}{}}00888888888","D":"CGn","p":[[1,"reference"],[5,"Private",624],[1,"unit"],[6,"Attribute",625],[5,"Painted",626],[5,"Command",627],[6,"Color",628],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",629],[8,"Result",629],[5,"Args",0],[5,"ArgMatches",630],[8,"Error",631],[6,"Result",632],[5,"Id",633],[6,"Option",634],[5,"Vec",635],[6,"RewriteResult",636],[5,"VecDeque",637],[5,"Box",638],[5,"OrderedHashMap",639],[1,"tuple"],[8,"Result",640],[6,"Quirk",625],[5,"PossibleValue",641],[5,"TypeId",642],[1,"slice"],[5,"Condition",643],[6,"RunMode",190],[5,"Program",644],[1,"str"],[8,"Function",644],[5,"Felt",645],[5,"IntoIter",646],[5,"String",647],[6,"Value",648],[5,"ExecutionResult",649],[6,"RunResultValue",650],[5,"TestsSummary",369],[5,"TestCompilation",651],[1,"bool"],[5,"PackageMetadata",652],[5,"TargetMetadata",652],[5,"TestConfig",653],[5,"FunctionId",654],[6,"CostTokenType",655],[1,"i32"],[5,"RunArgs",190],[6,"TestStatus",369],[5,"TestResult",369]],"r":[],"b":[],"c":"OzAAAAEAAAYAAwAsAAEA5gABAKoBAgA=","e":"OzAAAAEAALEAIAAAAAEAAwACAAkAAQAWAAMALgAEADcAAwA9AAEAQwABAEcAAQBLABAAZgAAAKMABwCtAAkAvwAEANAAAwDoAAIA7wADAPUAAQD8AAAAAgEPAEcBAABVAQAAWAEIAGMBBgByAQEAiQEFALMBBQC9AQQA0QEYADgCAABQAggAXAIIAA=="}],["cairo_native_runtime",{"t":"SSFFFFHHNNNNNNNNHHHHHHHHHHHHHHHHONNNHONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BYTES_IN_WORD","BYTE_ARRAY_MAGIC","DICT_GAS_REFUND_PER_ACCESS","FeltDict","FormattedItem","HALF_PRIME","as_cairo_short_string","as_cairo_short_string_ex","borrow","","","","borrow_mut","","","","cairo_native__dict_drop","cairo_native__dict_dup","cairo_native__dict_gas_refund","cairo_native__dict_get","cairo_native__dict_new","cairo_native__get_costs_builtin","cairo_native__libfunc__debug__print","cairo_native__libfunc__ec__ec_point_from_x_nz","cairo_native__libfunc__ec__ec_point_try_new_nz","cairo_native__libfunc__ec__ec_state_add","cairo_native__libfunc__ec__ec_state_add_mul","cairo_native__libfunc__ec__ec_state_init","cairo_native__libfunc__ec__ec_state_try_finalize_nz","cairo_native__libfunc__hades_permutation","cairo_native__libfunc__pedersen","cairo_native__set_costs_builtin","count","deref","","fmt","format_next_item","free_fn","from","","","","get","inner","into","","","","quote_if_string","try_from","","","","try_into","","","","type_id","","","","upcast","","","","upcast_mut","","","","vzip","","",""],"q":[[0,"cairo_native_runtime"],[73,"starknet_types_core::felt"],[74,"alloc::string"],[75,"core::option"],[76,"core::ffi"],[77,"core::fmt"],[78,"core::iter::traits::iterator"],[79,"core::clone"],[80,"core::result"],[81,"core::any"]],"i":"````````BlBdBfn3210````````````````0210`032103032103321032103210321032103210","f":"``````{{{d{b}}}{{h{f}}}}{{{d{b}}j}{{h{f}}}}{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}000{{n{h{{Af{A`}{{Ab{Ad}}}}}}}Ad}{{n{Af{A`}{{Ab{A`}}}}}n}{nAh}{{{d{ln}}{d{{Al{Aj}}}}}A`}{{{Af{A`}{{Ab{Ad}}}}}n}{{}Ah}{{AnAlB`}An}{{{d{l{Al{{Al{Aj}}}}}}}Bb}0{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{Aj}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Bb}{{{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}}Ad}{{{d{l{Al{Aj}}}}{d{{Al{Aj}}}}{d{{Al{Aj}}}}}Ad}{AhAh}`{{{d{Bd}}}{{d{b}}}}{{{d{Bf}}}{{d{Ah}}}}{{{d{n}}{d{lBh}}}Bj}{{{d{lc}}}{{h{Bl}}}{{C`{}{{Bn{b}}}}Cb}}`{cc{}}000{Blf}`{{}c{}}0001{c{{Cd{e}}}{}{}}000{{}{{Cd{c}}}{}}000{dCf}000{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}0005555","D":"Cn","p":[[5,"Felt",73],[1,"reference"],[5,"String",74],[6,"Option",75],[1,"usize"],[0,"mut"],[5,"FeltDict",0],[6,"c_void",76],[17,"Output"],[1,"unit"],[1,"fn"],[1,"u64"],[1,"u8"],[1,"array"],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[5,"Formatter",77],[8,"Result",77],[5,"FormattedItem",0],[17,"Item"],[10,"Iterator",78],[10,"Clone",79],[6,"Result",80],[5,"TypeId",81]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACoABwAAAAMABgAAAAkABwAhAAMAJgAAACwAAAAyABcA"}],["cairo_native_stress",{"t":"SJFFSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNHHNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","command","command_for_update","compile_and_insert","conceal","","context","cyan","","deref","","deref_mut","","dim","","directory_get_size","directory_is_empty","drop","","fg","","fixed","","fmt","from","","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","modify_starknet_contract","new","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","rounds","set_global_subscriber","strike","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_stress"],[188,"yansi::attr_quirk"],[189,"yansi::paint"],[190,"clap_builder::builder::command"],[191,"yansi::color"],[192,"cairo_lang_sierra::program"],[193,"cairo_native::ffi"],[194,"cairo_native::executor::aot"],[195,"alloc::sync"],[196,"core::cmp"],[197,"core::hash"],[198,"core::fmt"],[199,"std::io::error"],[200,"std::path"],[201,"core::convert"],[202,"clap_builder::parser::matches::arg_matches"],[203,"clap_builder"],[204,"core::result"],[205,"cairo_lang_sierra::ids"],[206,"core::option"],[207,"clap_builder::util::id"],[208,"alloc::boxed"],[209,"cairo_lang_semantic::substitution"],[210,"alloc::vec"],[211,"alloc::collections::vec_deque"],[212,"cairo_lang_utils::ordered_hash_map"],[213,"cairo_native::context"],[214,"core::any"],[215,"yansi::condition"]],"i":"`````nC`001010101010101010101010101010101011000110110101010``10101001000`110010111111100000001010101010`10`1101010101010101010101010101010101010101001010101010100`10101010101010001010101010","f":"`````{{bd}{{f{{b{c}}}}}{}}0{hh}0{{bj}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0222222222222222222`22{{}h}0{{{b{l{n{c}}}}c{b{A`}}Ab}{{Af{Ad}}}{AhAjAlAn}}44`44{B`{{b{c}}}{}}0{B`{{b{lc}}}{}}066{c{{Bd{Bb}}}{{Bh{Bf}}}}{c{{Bd{Bj}}}{{Bh{Bf}}}}{B`Bl}0::{{bBn}{{f{{b{c}}}}}{}}0{{{b{C`}}{b{lCb}}}Cd}{cc{}}0{{{b{Cf}}}{{Cj{C`Ch}}}}{{{b{lCf}}}{{Cj{C`Ch}}}}{Cl{{D`{CnA`}}}}{{{b{{n{c}}}}{b{c}}}{{Db{{Af{Ad}}}}}{AhAjAlAn}}{b{{f{{b{c}}}}}{}}0{{}{{Db{Dd}}}}{{}B`}0{{{b{l}}{b{l{Df{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Cj{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{D`{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Dj{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dl{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dn{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Db{c}}}}}{{Cj{Dhe}}}{}{}}1034265{{}c{}}0::::::::{{}Bl};;{{A`ClCl}A`}{{{b{E`}}}{{n{c}}}{AhAjAlAn}}========================{{bBn}{{f{{b{c}}}}}{}}0>>>>>>>>{{bBnBnBn}{{f{{b{c}}}}}{}}0????`??{{bEb}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000022`{{{b{C`}}}Bl}11{c{{Cj{e}}}{}{}}0{{}{{Cj{c}}}{}}0{bEd}044{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{{b{lC`}}{b{Cf}}}{{Cj{BlCh}}}}{{{b{lC`}}{b{lCf}}}{{Cj{BlCh}}}}??{{bEf}{{f{{b{c}}}}}{}}0999999","D":"A@j","p":[[1,"reference"],[6,"Attribute",188],[5,"Painted",189],[5,"Command",190],[6,"Color",191],[0,"mut"],[5,"NaiveAotCache",0],[5,"Program",192],[6,"OptLevel",193],[5,"AotNativeExecutor",194],[5,"Arc",195],[10,"PartialEq",196],[10,"Eq",196],[10,"Hash",197],[10,"Display",198],[1,"usize"],[1,"u64"],[8,"Result",199],[5,"Path",200],[10,"AsRef",201],[1,"bool"],[1,"unit"],[1,"u8"],[5,"StressTestCommand",0],[5,"Formatter",198],[8,"Result",198],[5,"ArgMatches",202],[8,"Error",203],[6,"Result",204],[1,"u32"],[5,"FunctionId",205],[1,"tuple"],[6,"Option",206],[5,"Id",207],[5,"Box",208],[6,"RewriteResult",209],[5,"Vec",210],[5,"VecDeque",211],[5,"OrderedHashMap",212],[5,"NativeContext",213],[6,"Quirk",188],[5,"TypeId",214],[5,"Condition",215]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADcAEQACAAAACAABABQAAwAqAAAALQABADIAAAA1AAMAPAACAEMAAABGAAEASQAAAEwAEABnAAAAawAAAKIAAAClAAUArQAHAA=="}],["cairo_native_test",{"t":"FONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNOONNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOONNNNNNOOONNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","attr","augment_args","augment_args_for_update","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","command","command_for_update","conceal","cyan","deref","deref_mut","dim","drop","fg","filter","fixed","fmt","from","from_arg_matches","from_arg_matches_mut","green","group_id","ignored","include_ignored","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","main","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","opt_level","path","primary","quirk","rapid_blink","red","resetting","rgb","run_mode","single_file","starknet","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","whenever","white","wrap","yellow","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_test"],[102,"cairo_native_test::utils"],[281,"cairo_native_test::utils::test"],[536,"yansi::attr_quirk"],[537,"yansi::paint"],[538,"clap_builder::builder::command"],[539,"yansi::color"],[540,"core::fmt"],[541,"clap_builder::parser::matches::arg_matches"],[542,"clap_builder"],[543,"core::result"],[544,"clap_builder::util::id"],[545,"core::option"],[546,"alloc::boxed"],[547,"cairo_lang_semantic::substitution"],[548,"cairo_lang_utils::ordered_hash_map"],[549,"alloc::collections::vec_deque"],[550,"alloc::vec"],[551,"anyhow"],[552,"core::any"],[553,"yansi::condition"],[554,"dyn_clone::sealed"],[555,"cairo_lang_sierra::program"],[556,"starknet_types_core::felt"],[557,"alloc::vec::into_iter"],[558,"alloc::string"],[559,"cairo_native::values"],[560,"cairo_native::execution_result"],[561,"cairo_lang_runner"],[562,"clap_builder::builder::possible_value"],[563,"cairo_lang_test_plugin"],[564,"scarb_metadata"],[565,"cairo_lang_test_plugin::test_config"],[566,"cairo_lang_sierra::ids"],[567,"cairo_lang_sierra::extensions::modules::gas"]],"i":"`Ad0000000000000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`00000Cj0``0Fd1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Ff0```EbFh2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``{{bd}{{f{{b{c}}}}}{}}{hh}0{{bj}{{f{{b{c}}}}}{}}{b{{f{{b{c}}}}}{}}000{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}2222222222{{}h}033{n{{b{c}}}{}}{n{{b{lc}}}{}}5{nA`}7`{{bAb}{{f{{b{c}}}}}{}}{{{b{Ad}}{b{lAf}}}Ah}{cc{}}{{{b{Aj}}}{{An{AdAl}}}}{{{b{lAj}}}{{An{AdAl}}}};{{}{{Bb{B`}}}}``{{}n}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{}c{}}{b{{f{{b{c}}}}}{}}000{{}{{C`{A`}}}}1111111111111{{bAb}{{f{{b{c}}}}}{}}2222{{bAbAbAb}{{f{{b{c}}}}}{}}33``3{{bCb}{{f{{b{c}}}}}{}}4441```4{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bCd}7{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}{{{b{lAd}}{b{Aj}}}{{An{A`Al}}}}{{{b{lAd}}{b{lAj}}}{{An{A`Al}}}}`<{{bCf}{{f{{b{c}}}}}{}}<<<````{{bCh}A`}{{bd}{{f{{b{c}}}}}{}}0{{bj}{{f{{b{c}}}}}{}}0????????7766????????????????????{{{b{Cj}}}Cj}{{b{b{lc}}}A`{}}{bA`}{b{{f{{b{c}}}}}{}}000{n{{b{c}}}{}}0{n{{b{lc}}}{}}022{nA`}077{{{b{Cl}}{b{Cn}}}{{C`{{b{D`}}}}}}{{bAb}{{f{{b{c}}}}}{}}0{{{b{Cj}}{b{lAf}}}Ah}{{{Dd{Db}}}Df}{cc{}}088{{}n}0{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}2631054{{}c{}}0{b{{f{{b{c}}}}}{}}000{{{b{Dh}}}{{Bn{Db}}}}111111111111111111111111111111>>11111111{{bAbAbAb}{{f{{b{c}}}}}{}}02222`22{{bCb}{{f{{b{c}}}}}{}}0333333{{{b{Dj}}}{{C`{Dl}}}}22`44`{bc{}}{{{b{Cj}}}{{Bb{Dn}}}}{c{{An{e}}}{}{}}0{{}{{An{c}}}{}}0{bCd}099{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{}{{b{{E`{Cj}}}}}}=={{bCf}{{f{{b{c}}}}}{}}0======`````{{bd}{{f{{b{c}}}}}{}}00{{bj}{{f{{b{c}}}}}{}}00????????????555444????????????????????????????????????{n{{b{c}}}{}}00{n{{b{lc}}}{}}00{b{{f{{b{c}}}}}{}}00{{{b{Eb}}n}A`}{nA`}00``555{{EdEfEfDf}{{Bh{Edn}}}}{{{b{Eh}}}{{Bn{{b{Ej}}}}}}{{bAb}{{f{{b{c}}}}}{}}00{cc{}}00`666`{{}n}00{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}41620356203514{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAbAbAb}{{f{{b{c}}}}}{}}00{b{{f{{b{c}}}}}{}}00000`000{{bCb}{{f{{b{c}}}}}{}}00111111111222{{{Bn{{Bh{DfEl}}}}Cl{Bj{En{Bj{F`Fb}}}}Fd}{{C`{Eb}}}}`222{c{{An{e}}}{}{}}00{{}{{An{c}}}{}}00{bCd}00555{b{{b{c}}}{}}00{{{b{l}}}{{b{lc}}}{}}00999{{bCf}{{f{{b{c}}}}}{}}00888888888","D":"C@j","p":[[1,"reference"],[6,"Attribute",536],[5,"Painted",537],[5,"Command",538],[6,"Color",539],[0,"mut"],[1,"usize"],[1,"unit"],[1,"u8"],[5,"Args",0],[5,"Formatter",540],[8,"Result",540],[5,"ArgMatches",541],[8,"Error",542],[6,"Result",543],[5,"Id",544],[6,"Option",545],[5,"Box",546],[6,"RewriteResult",547],[1,"tuple"],[5,"OrderedHashMap",548],[5,"VecDeque",549],[5,"Vec",550],[8,"Result",551],[6,"Quirk",536],[5,"TypeId",552],[5,"Condition",553],[5,"Private",554],[6,"RunMode",102],[5,"Program",555],[1,"str"],[8,"Function",555],[5,"Felt",556],[5,"IntoIter",557],[5,"String",558],[6,"Value",559],[5,"ExecutionResult",560],[6,"RunResultValue",561],[5,"PossibleValue",562],[1,"slice"],[5,"TestsSummary",281],[5,"TestCompilation",563],[1,"bool"],[5,"PackageMetadata",564],[5,"TargetMetadata",564],[5,"TestConfig",565],[5,"FunctionId",566],[6,"CostTokenType",567],[1,"i32"],[5,"RunArgs",102],[6,"TestStatus",281],[5,"TestResult",281]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAUAEAAAABYAjgCPAFIBUwFUAQ==","e":"OzAAAAEAAJMAIAAAAAAABAABAAsAAQAXAAEAGwABAB4AAAAiAAAAJAABACcAAAAqAAcANwAAAFkAAgBdAAUAZwAEAHgAAwCQAAIAlwADAJ0AAQCkAAAAqgAPAO8AAAD9AAAAAAEIAAsBBgAaAQEAMQEFAFsBBQBlAQQAeQEYAOABAAD4AQgABAIIAA=="}],["scarb_native_dump",{"t":"HCPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[181,"scarb_native_dump::utils::test"],[436,"anyhow"],[437,"dyn_clone::sealed"],[438,"yansi::attr_quirk"],[439,"yansi::paint"],[440,"yansi::color"],[441,"cairo_lang_sierra::program"],[442,"core::fmt"],[443,"starknet_types_core::felt"],[444,"alloc::vec::into_iter"],[445,"alloc::string"],[446,"alloc::vec"],[447,"cairo_lang_semantic::substitution"],[448,"core::result"],[449,"core::option"],[450,"cairo_lang_utils::ordered_hash_map"],[451,"alloc::boxed"],[452,"alloc::collections::vec_deque"],[453,"cairo_native::values"],[454,"cairo_native::execution_result"],[455,"cairo_lang_runner"],[456,"clap_builder::builder::possible_value"],[457,"core::any"],[458,"yansi::condition"],[459,"cairo_lang_test_plugin"],[460,"scarb_metadata"],[461,"cairo_lang_test_plugin::test_config"],[462,"cairo_lang_sierra::ids"],[463,"cairo_lang_sierra::extensions::modules::gas"]],"i":"``Ab0``0Ej1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101El0```DhEn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"{{}{{d{b}}}}`````{{fh}b}{{fj}{{l{{f{c}}}}}{}}0{{fn}{{l{{f{c}}}}}{}}0{f{{l{{f{c}}}}}{}}0000000{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}022222222222222222222{{{f{Ab}}}Ab}{{f{f{A`c}}}b{}}{fb}5555{Ad{{f{c}}}{}}0{Ad{{f{A`c}}}{}}077{Adb}099{{{f{Af}}{f{Ah}}}{{d{{f{Aj}}}}}}{{fAl}{{l{{f{c}}}}}{}}0{{{f{Ab}}{f{A`An}}}B`}{{{Bd{Bb}}}Bf}{cc{}}0=={{}Ad}0{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}6510342{{}c{}}0{f{{l{{f{c}}}}}{}}000{{{f{Ch}}}{{Bh{Bb}}}}111111111111111111111111111111>>11111111{{fAlAlAl}{{l{{f{c}}}}}{}}02222`22{{fCj}{{l{{f{c}}}}}{}}0333333{{{f{Cl}}}{{d{Cn}}}}22`44`{fc{}}{{{f{Ab}}}{{Bn{D`}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{fDb}099{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}0{{}{{f{{Dd{Ab}}}}}}=={{fDf}{{l{{f{c}}}}}{}}0======`````{{fj}{{l{{f{c}}}}}{}}00{{fn}{{l{{f{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{f{c}}}{}}00{Ad{{f{A`c}}}{}}00{f{{l{{f{c}}}}}{}}00{{{f{Dh}}Ad}b}{Adb}00``555{{DjDlDlBf}{{C`{DjAd}}}}{{{f{Dn}}}{{Bh{{f{E`}}}}}}{{fAl}{{l{{f{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}63504210245631{{}c{}}00???????????????????????????????????????????????????:::????????????{{fAlAlAl}{{l{{f{c}}}}}{}}00{f{{l{{f{c}}}}}{}}00000`000{{fCj}{{l{{f{c}}}}}{}}00111111111222{{{Bh{{C`{BfEb}}}}Af{Cb{Ed{Cb{EfEh}}}}Ej}{{d{Dh}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{fDb}00555{f{{f{c}}}{}}00{{{f{A`}}}{{f{A`c}}}{}}00999{{fDf}{{l{{f{c}}}}}{}}00888888888","D":"BGn","p":[[1,"unit"],[8,"Result",436],[1,"reference"],[5,"Private",437],[6,"Attribute",438],[5,"Painted",439],[6,"Color",440],[0,"mut"],[6,"RunMode",2],[1,"usize"],[5,"Program",441],[1,"str"],[8,"Function",441],[1,"u8"],[5,"Formatter",442],[8,"Result",442],[5,"Felt",443],[5,"IntoIter",444],[5,"String",445],[5,"Vec",446],[6,"RewriteResult",447],[6,"Result",448],[6,"Option",449],[1,"tuple"],[5,"OrderedHashMap",450],[5,"Box",451],[5,"VecDeque",452],[6,"Value",453],[6,"Quirk",438],[5,"ExecutionResult",454],[6,"RunResultValue",455],[5,"PossibleValue",456],[5,"TypeId",457],[1,"slice"],[5,"Condition",458],[5,"TestsSummary",181],[5,"TestCompilation",459],[1,"bool"],[5,"PackageMetadata",460],[5,"TargetMetadata",460],[5,"TestConfig",461],[5,"FunctionId",462],[6,"CostTokenType",463],[1,"i32"],[5,"RunArgs",2],[6,"TestStatus",181],[5,"TestResult",181]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAQAEAAAACoAKwDuAO8A8AA=","e":"OzAAAAEAAHUAFAAAAAAAAgAFABQAAwAsAAIAMwADADkAAQBAAAAARgAPAIsAAACZAAAAnAAIAKcABgC2AAEAzQAFAPcABQABAQQAFQEYAHwBAACUAQgAoAEIAA=="}],["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNONNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOONNNONNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","","attr","","","augment_args","augment_args_for_update","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize_test_compilation","dim","","","drop","","","fg","","","filter","fixed","","","fmt","","from","","","from_arg_matches","from_arg_matches_mut","green","","","group_id","ignored","include_ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","main","mask","","","matches","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","opt_level","packages_filter","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_mode","seen","strike","","","test_kind","to_owned","","to_possible_value","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","","","whenever","","","white","","","wrap","","","yellow","","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_test"],[284,"scarb_native_test::utils"],[463,"scarb_native_test::utils::test"],[718,"dyn_clone::sealed"],[719,"yansi::attr_quirk"],[720,"yansi::paint"],[721,"clap_builder::builder::command"],[722,"yansi::color"],[723,"std::path"],[724,"alloc::string"],[725,"cairo_lang_test_plugin"],[726,"anyhow"],[727,"core::fmt"],[728,"clap_builder::parser::matches::arg_matches"],[729,"clap_builder"],[730,"core::result"],[731,"clap_builder::util::id"],[732,"core::option"],[733,"cairo_lang_semantic::substitution"],[734,"cairo_lang_utils::ordered_hash_map"],[735,"alloc::vec"],[736,"alloc::boxed"],[737,"alloc::collections::vec_deque"],[738,"clap_builder::builder::possible_value"],[739,"core::any"],[740,"yansi::condition"],[741,"cairo_lang_sierra::program"],[742,"starknet_types_core::felt"],[743,"alloc::vec::into_iter"],[744,"cairo_native::values"],[745,"cairo_native::execution_result"],[746,"cairo_lang_runner"],[747,"scarb_metadata"],[748,"cairo_lang_test_plugin::test_config"],[749,"cairo_lang_sierra::ids"],[750,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ad`0``0Ab101Af111201201201201201201201201201201201201201201201201201212121112012020120120`12012012011201212011120111120111111122222220000000120120120120120`12021201201201201201201201201201201201201201201201201201201201201112012012012012012010120112212012012012012012011`20120120120120120Dl0``0Fj1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fl0```ElFn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}00{ll}0{{bn}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000000{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00222222222222222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}0777777{{}Ad}{{}Af}{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{{{b{Aj}}Al}{{B`{An}}}}<<<{Ahf}00>>>`{{bBb}{{j{{b{c}}}}}{}}00{{{b{Ab}}{b{A`Bd}}}Bf}{{{b{Ad}}{b{A`Bd}}}Bf}{cc{}}00{{{b{Bh}}}{{Bl{AbBj}}}}{{{b{A`Bh}}}{{Bl{AbBj}}}}{b{{j{{b{c}}}}}{}}00{{}{{C`{Bn}}}}``{{}Ah}00{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}64105321623504{{}c{}}00::::::::::::{{}{{B`{f}}}};;;{{{b{Ad}}{b{Cn}}}D`}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{{bBb}{{j{{b{c}}}}}{}}00============{{bBbBbBb}{{j{{b{c}}}}}{}}00>>>>>>``>>>{{bDb}{{j{{b{c}}}}}{}}00?????????111``???`{bc{}}0{{{b{Ad}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{A`Ab}}{b{Bh}}}{{Bl{fBj}}}}{{{b{A`Ab}}{b{A`Bh}}}{{Bl{fBj}}}}`{{}{{b{{Dh{Ad}}}}}}{{{b{A`Af}}AlAl}D`}{{}c{}}00{{bDj}{{j{{b{c}}}}}{}}00888888888````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0;;;;;;;;::99;;;;;;;;;;;;;;;;;;;;{{{b{Dl}}}Dl}{{b{b{A`c}}}f{}}{bf}>>>>{Ah{{b{c}}}{}}0{Ah{{b{A`c}}}{}}0{b{{j{{b{c}}}}}{}}0{Ahf}077{{{b{Dn}}{b{Cn}}}{{B`{{b{E`}}}}}}{{bBb}{{j{{b{c}}}}}{}}0{{{b{Dl}}{b{A`Bd}}}Bf}{{{Ed{Eb}}}Al}{cc{}}066{{}Ah}0{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}3260145{{}c{}}0????{{{b{Ef}}}{{Cf{Eb}}}}{b{{j{{b{c}}}}}{}}00000000000000000000000000000>>00000000{{bBbBbBb}{{j{{b{c}}}}}{}}01111`11{{bDb}{{j{{b{c}}}}}{}}0222222{{{b{Eh}}}{{B`{Ej}}}}22`33`{bc{}}{{{b{Dl}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{bDf}088{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Dh{Dl}}}}}}=={{bDj}{{j{{b{c}}}}}{}}0<<<<<<`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00>>>>>>>>>>>>555444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{El}}Ah}f}{Ahf}00``555{{AnD`D`Al}{{Cl{AnAh}}}}{{{b{En}}}{{Cf{{b{F`}}}}}}{{bBb}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ah}00{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}63215044015632{{}c{}}00???????????????????????????????????????????????????:::????????????{{bBbBbBb}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bDb}{{j{{b{c}}}}}{}}00111111111222{{{Cf{{Cl{AlFb}}}}Dn{Cd{Fd{Cd{FfFh}}}}Fj}{{B`{El}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bDj}{{j{{b{c}}}}}{}}00888888888","D":"COj","p":[[1,"reference"],[5,"Private",718],[1,"unit"],[6,"Attribute",719],[5,"Painted",720],[5,"Command",721],[6,"Color",722],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",723],[5,"String",724],[5,"TestCompilation",725],[8,"Result",726],[1,"u8"],[5,"Formatter",727],[8,"Result",727],[5,"ArgMatches",728],[8,"Error",729],[6,"Result",730],[5,"Id",731],[6,"Option",732],[6,"RewriteResult",733],[5,"OrderedHashMap",734],[5,"Vec",735],[5,"Box",736],[5,"VecDeque",737],[1,"tuple"],[1,"str"],[1,"bool"],[6,"Quirk",719],[5,"PossibleValue",738],[5,"TypeId",739],[1,"slice"],[5,"Condition",740],[6,"RunMode",284],[5,"Program",741],[8,"Function",741],[5,"Felt",742],[5,"IntoIter",743],[6,"Value",744],[5,"ExecutionResult",745],[6,"RunResultValue",746],[5,"TestsSummary",463],[5,"PackageMetadata",747],[5,"TargetMetadata",747],[5,"TestConfig",748],[5,"FunctionId",749],[6,"CostTokenType",750],[1,"i32"],[5,"RunArgs",284],[6,"TestStatus",463],[5,"TestResult",463]],"r":[],"b":[],"c":"OzAAAAEAAAcAAwA+AAIARAEBAAgCAgA=","e":"OzAAAAEAANEAJQAAAAEAAwAFAAwAAQAdAAUAQQAHAE8ACABbAAIAZQABAGoAAQBvAAAAcgAXAJkAAACdAAAA2wAAAO8AAAD0AAsAAwEJAA4BAgAdAQQALgEDAEYBAgBNAQMAUwEBAFoBAABgAQ8ApQEAALMBAAC2AQgAwQEGANABAQDnAQUAEQIFABsCBAAvAhgAlgIAAK4CCAC6AggA"}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[80988,4248,4400,10771,2697,4820,10005,7613,11631]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[80978,4248,4400,10771,2697,4820,10005,7613,11631]}
\ No newline at end of file
diff --git a/settings.html b/settings.html
index 267049dc2..d5cca9ee8 100644
--- a/settings.html
+++ b/settings.html
@@ -1 +1 @@
-Settings Rustdoc settings
Back
\ No newline at end of file
+Settings Rustdoc settings
Back
\ No newline at end of file
diff --git a/src/cairo_native/arch/x86_64.rs.html b/src/cairo_native/arch/x86_64.rs.html
index 89667bdbc..ea9668373 100644
--- a/src/cairo_native/arch/x86_64.rs.html
+++ b/src/cairo_native/arch/x86_64.rs.html
@@ -210,45 +210,6 @@
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
//! # Implementations of `AbiArgument` for the `x86_64` architecture.
//!
//! The x86_64 architecture uses 6 64-bit registers for arguments. This means that the first 48
@@ -271,93 +232,55 @@
impl AbiArgument for bool {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(1).align());
- buffer.push((*self) as u8);
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u8 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(8).align());
- buffer.push(*self);
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i8 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(8).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u16 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(16).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i16 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(16).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u32 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(32).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i32 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(32).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u64 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() >= 48 {
- align_to(buffer, get_integer_layout(64).align());
- }
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -365,9 +288,6 @@
impl AbiArgument for i64 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() >= 48 {
- align_to(buffer, get_integer_layout(64).align());
- }
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -378,6 +298,7 @@
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(128).align());
}
+
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -388,6 +309,7 @@
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(128).align());
}
+
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -415,13 +337,13 @@
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
// The `bytes31` type is treated as a 248-bit integer, therefore it follows the same
// splitting rules as them.
+
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(252).align());
}
buffer.extend_from_slice(self);
buffer.push(0);
-
Ok(())
}
}
diff --git a/src/cairo_native/executor.rs.html b/src/cairo_native/executor.rs.html
index 79b0e4508..73a2f1b74 100644
--- a/src/cairo_native/executor.rs.html
+++ b/src/cairo_native/executor.rs.html
@@ -766,6 +766,8 @@
766
767
768
+769
+770
//! # Executors
//!
//! This module provides methods to execute the programs, either via JIT or compiled ahead
@@ -1119,7 +1121,6 @@
#[cfg(target_arch = "aarch64")] mut ret_registers: [u64; 4],
) -> Result<Value, Error> {
let type_info = registry.get_type(type_id)?;
- let debug_name = type_info.info().long_id.to_string();
// Align the pointer to the actual return value.
if let Some(return_ptr) = &mut return_ptr {
@@ -1141,11 +1142,12 @@
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?),
CoreTypeConcrete::Box(info) => unsafe {
let ptr =
return_ptr.unwrap_or_else(|| NonNull::new_unchecked(ret_registers[0] as *mut ()));
- let value = Value::from_ptr(ptr, &info.ty, registry)?;
+ let value = Value::from_ptr(ptr, &info.ty, registry, true)?;
libc_free(ptr.cast().as_ptr());
Ok(value)
},
@@ -1153,6 +1155,7 @@
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?),
CoreTypeConcrete::Felt252(_)
| CoreTypeConcrete::StarkNet(
@@ -1161,7 +1164,7 @@
| StarkNetTypeConcrete::StorageAddress(_)
| StarkNetTypeConcrete::StorageBaseAddress(_),
) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
#[cfg(target_arch = "x86_64")]
// Since x86_64's return values hold at most two different 64bit registers,
@@ -1180,7 +1183,7 @@
}
},
CoreTypeConcrete::Bytes31(_) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
#[cfg(target_arch = "x86_64")]
// Since x86_64's return values hold at most two different 64bit registers,
@@ -1195,7 +1198,7 @@
}
},
CoreTypeConcrete::BoundedInt(info) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
let mut data = if info.range.offset_bit_width() <= 64 {
BigInt::from(ret_registers[0])
@@ -1267,7 +1270,7 @@
Ok(Value::Null)
} else {
let ptr = NonNull::new_unchecked(ptr);
- let value = Value::from_ptr(ptr, &info.ty, registry)?;
+ let value = Value::from_ptr(ptr, &info.ty, registry, true)?;
libc_free(ptr.as_ptr().cast());
Ok(value)
}
@@ -1323,7 +1326,7 @@
}
};
let value = match ptr {
- Ok(ptr) => Box::new(Value::from_ptr(ptr, &info.variants[tag], registry)?),
+ Ok(ptr) => Box::new(Value::from_ptr(ptr, &info.variants[tag], registry, true)?),
Err(offset) => {
ret_registers.copy_within(offset.., 0);
Box::new(parse_result(
@@ -1338,27 +1341,28 @@
Ok(Value::Enum {
tag,
value,
- debug_name: Some(debug_name),
+ debug_name: Some(type_info.info().long_id.to_string()),
})
}
CoreTypeConcrete::Struct(info) => {
if info.members.is_empty() {
Ok(Value::Struct {
fields: Vec::new(),
- debug_name: Some(debug_name),
+ debug_name: Some(type_info.info().long_id.to_string()),
})
} else {
Ok(Value::from_ptr(
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?)
}
}
CoreTypeConcrete::Felt252Dict(_) | CoreTypeConcrete::SquashedFelt252Dict(_) => unsafe {
let ptr = return_ptr
.unwrap_or_else(|| NonNull::new_unchecked((&raw mut ret_registers[0]) as *mut ()));
- Ok(Value::from_ptr(ptr, type_id, registry)?)
+ Ok(Value::from_ptr(ptr, type_id, registry, true)?)
},
CoreTypeConcrete::Snapshot(info) => {
diff --git a/src/cairo_native/executor/contract.rs.html b/src/cairo_native/executor/contract.rs.html
index 67b25e846..2ccbbdc54 100644
--- a/src/cairo_native/executor/contract.rs.html
+++ b/src/cairo_native/executor/contract.rs.html
@@ -831,6 +831,24 @@
831
832
833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
//! A specialized executor for Starknet contracts, avoiding the overhead of storing the sierra program registry and
//! enabling efficient serialization of the program/data once compiled.
//!
@@ -867,7 +885,7 @@
use crate::{
arch::AbiArgument,
context::NativeContext,
- error::{panic::ToNativeAssertError, Error},
+ error::{panic::ToNativeAssertError, Error, Result},
execution_result::{BuiltinStats, ContractExecutionResult},
executor::invoke_trampoline,
metadata::gas::MetadataComputationConfig,
@@ -979,7 +997,7 @@
sierra_program: &Program,
entry_points: &ContractEntryPoints,
opt_level: OptLevel,
- ) -> Result<Self, Error> {
+ ) -> Result<Self> {
let native_context = NativeContext::new();
let mut entry_point_selector_to_id = BTreeMap::new();
@@ -1094,7 +1112,7 @@
}
/// Save the library to the desired path, alongside it is saved also a json file with additional info.
- pub fn save(&mut self, to: impl AsRef<Path>) -> Result<(), Error> {
+ pub fn save(&mut self, to: impl AsRef<Path>) -> Result<()> {
let to = to.as_ref();
std::fs::copy(&self.path, to)?;
@@ -1109,7 +1127,7 @@
}
/// Load the executor from an already compiled library with the additional info json file.
- pub fn load(library_path: &Path) -> Result<Self, Error> {
+ pub fn load(library_path: &Path) -> Result<Self> {
let info_str = std::fs::read_to_string(library_path.with_extension("json"))?;
let contract_info: NativeContractInfo = serde_json::from_str(&info_str)?;
Ok(Self {
@@ -1136,7 +1154,7 @@
gas: u64,
builtin_costs: Option<BuiltinCosts>,
mut syscall_handler: impl StarknetSyscallHandler,
- ) -> Result<ContractExecutionResult, Error> {
+ ) -> Result<ContractExecutionResult> {
let arena = Bump::new();
let mut invoke_data = Vec::<u8>::new();
@@ -1150,12 +1168,7 @@
};
let function_ptr = self.find_function_ptr(&function_id, true)?;
- let builtin_costs = builtin_costs.unwrap_or_default();
- let builtin_costs_stack: [u64; 7] = builtin_costs.into();
- // Note: the ptr into a slice is valid, it can be used with cast()
- // Care should be taken if you dereference it and take the .as_ptr() of the slice, since when you
- // deref it, it will be a copy on the stack, so you will get the ptr of the value in the stack.
- let builtin_costs: *mut [u64; 7] = Box::into_raw(Box::new(builtin_costs_stack));
+ let builtin_costs: [u64; 7] = builtin_costs.unwrap_or_default().into();
let set_costs_builtin = unsafe {
self.library
.get::<extern "C" fn(*const u64) -> *const u64>(
@@ -1163,7 +1176,7 @@
)?
};
// We may be inside a recursive contract, save the possible saved builtin costs to restore it after our call.
- let old_builtincosts_ptr = set_costs_builtin(builtin_costs.cast());
+ let old_builtincosts_ptr = set_costs_builtin(builtin_costs.as_ptr());
// it can vary from contract to contract thats why we need to store/ load it.
let builtins_size: usize = self.contract_info.entry_points_info[&function_id.id]
@@ -1189,7 +1202,7 @@
}
BuiltinType::BuiltinCosts => {
// todo: check if valid
- builtin_costs_stack.as_ptr().to_bytes(&mut invoke_data)?;
+ builtin_costs.as_ptr().to_bytes(&mut invoke_data)?;
}
BuiltinType::System => {
(&mut syscall_handler as *mut StarknetSyscallHandlerCallbacks<_>)
@@ -1202,18 +1215,42 @@
}
let felt_layout = get_integer_layout(252).pad_to_align();
- let ptr: *mut () = unsafe { libc_malloc(felt_layout.size() * args.len()).cast() };
+ let refcount_offset = get_integer_layout(32)
+ .align_to(felt_layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size();
+
+ let ptr = match args.len() {
+ 0 => std::ptr::null_mut(),
+ _ => unsafe {
+ let ptr: *mut () =
+ libc_malloc(felt_layout.size() * args.len() + refcount_offset).cast();
+
+ // Write reference count.
+ ptr.cast::<u32>().write(1);
+ ptr.byte_add(refcount_offset)
+ },
+ };
let len: u32 = args
.len()
.try_into()
.to_native_assert_error("number of arguments should fit into a u32")?;
ptr.to_bytes(&mut invoke_data)?;
- 0u32.to_bytes(&mut invoke_data)?; // start
- len.to_bytes(&mut invoke_data)?; // end
- len.to_bytes(&mut invoke_data)?; // cap
+ if cfg!(target_arch = "aarch64") {
+ 0u32.to_bytes(&mut invoke_data)?; // start
+ len.to_bytes(&mut invoke_data)?; // end
+ len.to_bytes(&mut invoke_data)?; // cap
+ } else if cfg!(target_arch = "x86_64") {
+ (0u32 as u64).to_bytes(&mut invoke_data)?; // start
+ (len as u64).to_bytes(&mut invoke_data)?; // end
+ (len as u64).to_bytes(&mut invoke_data)?; // cap
+ } else {
+ unreachable!("unsupported architecture");
+ }
- for (idx, elem) in args.iter().enumerate() {
+ for (idx, elem) in args.iter().enumerate() {
let f = elem.to_bytes_le();
unsafe {
std::ptr::copy_nonoverlapping(
@@ -1354,7 +1391,12 @@
}
if !array_ptr.is_null() {
- unsafe { libc_free(array_ptr.cast()) };
+ unsafe {
+ let ptr = array_ptr.byte_sub(refcount_offset);
+ assert_eq!(ptr.cast::<u32>().read(), 1);
+
+ libc_free(ptr.cast());
+ }
}
let error_msg = if tag != 0 {
@@ -1371,14 +1413,8 @@
None
};
- // Restore the old ptr and get back our builtincost box and free it.
- let our_builtincosts_ptr = set_costs_builtin(old_builtincosts_ptr);
-
- if !our_builtincosts_ptr.is_null() && old_builtincosts_ptr.is_aligned() {
- unsafe {
- let _ = Box::<[u64; 7]>::from_raw(our_builtincosts_ptr.cast_mut().cast());
- };
- }
+ // Restore the original builtin costs pointer.
+ set_costs_builtin(old_builtincosts_ptr);
#[cfg(feature = "with-mem-tracing")]
crate::utils::mem_tracing::report_stats();
@@ -1395,7 +1431,7 @@
&self,
function_id: &FunctionId,
is_for_contract_executor: bool,
- ) -> Result<*mut c_void, Error> {
+ ) -> Result<*mut c_void> {
let function_name = generate_function_name(function_id, is_for_contract_executor);
let function_name = format!("_mlir_ciface_{function_name}");
diff --git a/src/cairo_native/libfuncs.rs.html b/src/cairo_native/libfuncs.rs.html
index e8fb9dcdb..78455dd94 100644
--- a/src/cairo_native/libfuncs.rs.html
+++ b/src/cairo_native/libfuncs.rs.html
@@ -632,9 +632,9 @@
Self::Const(selector) => self::r#const::build(
context, registry, entry, location, helper, metadata, selector,
),
- Self::Coupon(info) => {
- self::coupon::build(context, registry, entry, location, helper, metadata, info)
- }
+ Self::Coupon(selector) => self::coupon::build(
+ context, registry, entry, location, helper, metadata, selector,
+ ),
Self::CouponCall(info) => self::function_call::build(
context, registry, entry, location, helper, metadata, info,
),
diff --git a/src/cairo_native/libfuncs/array.rs.html b/src/cairo_native/libfuncs/array.rs.html
index c7616528f..070d7878a 100644
--- a/src/cairo_native/libfuncs/array.rs.html
+++ b/src/cairo_native/libfuncs/array.rs.html
@@ -2513,44 +2513,474 @@
2513
2514
2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
//! # Array libfuncs
-// TODO: A future possible improvement would be to put the array behind a double pointer and a
-// reference counter, to avoid unnecessary clones.
-
use super::LibfuncHelper;
use crate::{
- error::{panic::ToNativeAssertError, Error, Result},
+ error::{Error, Result, SierraAssertError},
metadata::{
- drop_overrides::DropOverridesMeta, realloc_bindings::ReallocBindingsMeta, MetadataStorage,
+ drop_overrides::DropOverridesMeta, dup_overrides::DupOverridesMeta,
+ realloc_bindings::ReallocBindingsMeta, MetadataStorage,
},
- native_assert, native_panic,
- types::TypeBuilder,
- utils::{BlockExt, GepIndex, ProgramRegistryExt},
+ utils::{get_integer_layout, BlockExt, GepIndex, ProgramRegistryExt},
};
use cairo_lang_sierra::{
extensions::{
array::{ArrayConcreteLibfunc, ConcreteMultiPopLibfunc},
core::{CoreLibfunc, CoreType, CoreTypeConcrete},
lib_func::{SignatureAndTypeConcreteLibfunc, SignatureOnlyConcreteLibfunc},
- ConcreteLibfunc,
+ types::InfoAndTypeConcreteType,
},
program_registry::ProgramRegistry,
};
use melior::{
dialect::{
arith::{self, CmpiPredicate},
- cf,
- llvm::{self, r#type::pointer},
- ods, scf,
+ cf, llvm, ods, scf,
},
ir::{
- attribute::{DenseI32ArrayAttribute, IntegerAttribute},
- r#type::IntegerType,
- Block, Location, Region, Value, ValueLike,
+ attribute::IntegerAttribute, r#type::IntegerType, Block, Location, Region, Value, ValueLike,
},
Context,
};
+use std::alloc::Layout;
/// Select and call the correct libfunc builder function from the selector.
pub fn build<'ctx, 'this>(
@@ -2566,15 +2996,33 @@
ArrayConcreteLibfunc::New(info) => {
build_new(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::Append(info) => {
- build_append(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::SpanFromTuple(info) => {
+ build_span_from_tuple(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::PopFront(info) => {
- build_pop_front(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::TupleFromSpan(info) => {
+ build_tuple_from_span(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::PopFrontConsume(info) => {
- build_pop_front_consume(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::Append(info) => {
+ build_append(context, registry, entry, location, helper, metadata, info)
}
+ ArrayConcreteLibfunc::PopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
+ ArrayConcreteLibfunc::PopFrontConsume(info) => build_pop::<true, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
ArrayConcreteLibfunc::Get(info) => {
build_get(context, registry, entry, location, helper, metadata, info)
}
@@ -2584,23 +3032,41 @@
ArrayConcreteLibfunc::Len(info) => {
build_len(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::SnapshotPopFront(info) => {
- build_snapshot_pop_front(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SnapshotPopBack(info) => {
- build_snapshot_pop_back(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SpanFromTuple(info) => {
- build_span_from_tuple(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::TupleFromSpan(info) => {
- build_tuple_from_span(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SnapshotMultiPopFront(info) => build_snapshot_multi_pop_front(
- context, registry, entry, location, helper, metadata, info,
+ ArrayConcreteLibfunc::SnapshotPopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
+ ArrayConcreteLibfunc::SnapshotPopBack(info) => build_pop::<false, true>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
),
- ArrayConcreteLibfunc::SnapshotMultiPopBack(info) => build_snapshot_multi_pop_back(
- context, registry, entry, location, helper, metadata, info,
+ ArrayConcreteLibfunc::SnapshotMultiPopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Multi(info),
+ ),
+ ArrayConcreteLibfunc::SnapshotMultiPopBack(info) => build_pop::<false, true>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Multi(info),
),
}
}
@@ -2608,37 +3074,33 @@
/// Generate MLIR operations for the `array_new` libfunc.
pub fn build_new<'ctx, 'this>(
context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ _registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureOnlyConcreteLibfunc,
+ _metadata: &mut MetadataStorage,
+ _info: &SignatureOnlyConcreteLibfunc,
) -> Result<()> {
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.branch_signatures()[0].vars[0].ty,
- )?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr = entry
- .append_op_result(ods::llvm::mlir_zero(context, pointer(context, 0), location).into())?;
+ let nullptr = entry.append_op_result(llvm::zero(ptr_ty, location))?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
- let k0 = entry.const_int(context, location, 0, 32)?;
- let value = entry.append_op_result(llvm::undef(array_ty, location))?;
- let value = entry.insert_value(context, location, value, ptr, 0)?;
- let value = entry.insert_value(context, location, value, k0, 1)?;
- let value = entry.insert_value(context, location, value, k0, 2)?;
- let value = entry.insert_value(context, location, value, k0, 3)?;
+ let value = entry.append_op_result(llvm::undef(
+ llvm::r#type::r#struct(context, &[ptr_ty, len_ty, len_ty, len_ty], false),
+ location,
+ ))?;
+ let value = entry.insert_values(context, location, value, &[nullptr, k0, k0, k0])?;
entry.append_operation(helper.br(0, &[value], location));
Ok(())
}
-/// Generate MLIR operations for the `array_append` libfunc.
-pub fn build_append<'ctx, 'this>(
+/// Generate MLIR operations for the `span_from_tuple` libfunc.
+///
+/// Note: The `&info.ty` field has the entire `[T; N]` tuple. It is not the `T` in `Array<T>`.
+pub fn build_span_from_tuple<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
@@ -2647,237 +3109,264 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- // Algorithm:
- // - If array_end < capacity, then append.
- // - If array_end == capacity:
- // - If array_start == 0: realloc, then append.
- // - If array_start != 0: memmove, then append.
-
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let tuple_len = {
+ let CoreTypeConcrete::Struct(info) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ info.members.len()
+ };
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
- let elem_stride = elem_layout.pad_to_align().size();
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
+ let (_, tuple_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
- let k1 = entry.const_int(context, location, 1, 32)?;
+ let array_len_bytes = tuple_layout.pad_to_align().size();
+ let array_len_bytes_with_offset = entry.const_int(
+ context,
+ location,
+ array_len_bytes + calc_refcount_offset(tuple_layout),
+ 64,
+ )?;
+ let array_len_bytes = entry.const_int(context, location, array_len_bytes, 64)?;
+ let array_len = entry.const_int_from_type(context, location, tuple_len, len_ty)?;
- let elem_stride = entry.const_int(context, location, elem_stride, 64)?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
+ let k1 = entry.const_int_from_type(context, location, 1, len_ty)?;
- let array_end = entry.extract_value(context, location, entry.arg(0)?, len_ty, 2)?;
- let array_capacity = entry.extract_value(context, location, entry.arg(0)?, len_ty, 3)?;
+ let array_ptr = entry.append_op_result(llvm::zero(ptr_ty, location))?;
+ let array_ptr = entry.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ array_ptr,
+ array_len_bytes_with_offset,
+ location,
+ )?)?;
+ entry.store(context, location, array_ptr, k1)?;
- let has_tail_space = entry.cmpi(
+ let array_ptr = entry.gep(
context,
- CmpiPredicate::Ult,
- array_end,
- array_capacity,
location,
+ array_ptr,
+ &[GepIndex::Const(calc_refcount_offset(tuple_layout) as i32)],
+ IntegerType::new(context, 8).into(),
)?;
+ entry.memcpy(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ array_ptr,
+ array_len_bytes,
+ );
+ entry.append_operation(ReallocBindingsMeta::free(
+ context,
+ entry.argument(0)?.into(),
+ location,
+ )?);
- let handle_block = helper.append_block(Block::new(&[]));
- let memmove_block = helper.append_block(Block::new(&[]));
- let realloc_block = helper.append_block(Block::new(&[]));
- let append_block = helper.append_block(Block::new(&[(array_ty, location)]));
-
- entry.append_operation(cf::cond_br(
+ let value = entry.append_op_result(llvm::undef(
+ llvm::r#type::r#struct(context, &[ptr_ty, len_ty, len_ty, len_ty], false),
+ location,
+ ))?;
+ let value = entry.insert_values(
context,
- has_tail_space,
- append_block,
- handle_block,
- &[entry.arg(0)?],
- &[],
location,
- ));
+ value,
+ &[array_ptr, k0, array_len, array_len],
+ )?;
- {
- let k0 = handle_block.const_int(context, location, 0, 32)?;
- let array_start =
- handle_block.extract_value(context, location, entry.arg(0)?, len_ty, 1)?;
+ entry.append_operation(helper.br(0, &[value], location));
+ Ok(())
+}
- let has_head_space =
- handle_block.cmpi(context, CmpiPredicate::Ne, array_start, k0, location)?;
- handle_block.append_operation(cf::cond_br(
- context,
- has_head_space,
- memmove_block,
- realloc_block,
- &[],
- &[],
- location,
- ));
- }
+/// Generate MLIR operations for the `tuple_from_span` libfunc.
+///
+/// Note: The `&info.ty` field has the entire `[T; N]` tuple. It is not the `T` in `Array<T>`.
+pub fn build_tuple_from_span<'ctx, 'this>(
+ context: &'ctx Context,
+ registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ entry: &'this Block<'ctx>,
+ location: Location<'ctx>,
+ helper: &LibfuncHelper<'ctx, 'this>,
+ metadata: &mut MetadataStorage,
+ info: &SignatureAndTypeConcreteLibfunc,
+) -> Result<()> {
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
- {
- let array_start =
- memmove_block.extract_value(context, location, entry.arg(0)?, len_ty, 1)?;
+ let elem_id = {
+ let CoreTypeConcrete::Snapshot(info) =
+ registry.get_type(&info.signature.param_signatures[0].ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+ let CoreTypeConcrete::Array(info) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let start_offset =
- memmove_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let start_offset = memmove_block.muli(start_offset, elem_stride, location)?;
+ &info.ty
+ };
+ let tuple_len_const = {
+ let CoreTypeConcrete::Struct(param) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let dst_ptr = memmove_block.extract_value(context, location, entry.arg(0)?, ptr_ty, 0)?;
- let src_ptr = memmove_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- dst_ptr,
- &[start_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ param.members.len()
+ };
- let array_len =
- memmove_block.append_op_result(arith::subi(array_end, array_start, location))?;
- let memmove_len =
- memmove_block.extui(array_len, IntegerType::new(context, 64).into(), location)?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
+ let (_, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, elem_id)?;
+ let (tuple_ty, tuple_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
- let memmove_len = memmove_block.muli(memmove_len, elem_stride, location)?;
- memmove_block.append_operation(
- ods::llvm::intr_memmove(
- context,
- dst_ptr,
- src_ptr,
- memmove_len,
- IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
- location,
- )
- .into(),
- );
+ let array_ptr = entry.extract_value(context, location, entry.argument(0)?.into(), ptr_ty, 0)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
- let k0 = memmove_block.const_int_from_type(context, location, 0, len_ty)?;
- let value = memmove_block.insert_value(context, location, entry.arg(0)?, k0, 1)?;
- let value = memmove_block.insert_value(context, location, value, array_len, 2)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let tuple_len = entry.const_int_from_type(context, location, tuple_len_const, len_ty)?;
+ let len_matches = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Eq,
+ array_len,
+ tuple_len,
+ location,
+ ))?;
- memmove_block.append_operation(cf::br(append_block, &[value], location));
- }
+ let valid_block = helper.append_block(Block::new(&[]));
+ let error_block = helper.append_block(Block::new(&[]));
+ entry.append_operation(cf::cond_br(
+ context,
+ len_matches,
+ valid_block,
+ error_block,
+ &[],
+ &[],
+ location,
+ ));
+
+ // Ensure the type's clone and drop implementations are registered.
+ registry.build_type(
+ context,
+ helper,
+ registry,
+ metadata,
+ &info.signature.param_signatures[0].ty,
+ )?;
{
- let k8 = realloc_block.const_int(context, location, 8, 32)?;
- let k1024 = realloc_block.const_int(context, location, 1024, 32)?;
-
- // Array allocation growth formula:
- // new_len = max(8, old_len + min(1024, 2 * old_len));
- let new_capacity = realloc_block.shli(array_end, k1, location)?;
- let new_capacity =
- realloc_block.append_op_result(arith::minui(new_capacity, k1024, location))?;
- let new_capacity = realloc_block.addi(new_capacity, array_end, location)?;
- let new_capacity =
- realloc_block.append_op_result(arith::maxui(new_capacity, k8, location))?;
-
- let realloc_size = {
- let new_capacity = realloc_block.extui(
- new_capacity,
- IntegerType::new(context, 64).into(),
- location,
- )?;
- realloc_block.muli(new_capacity, elem_stride, location)?
- };
+ let value_size = valid_block.const_int(context, location, tuple_layout.size(), 64)?;
- let ptr = realloc_block.extract_value(context, location, entry.arg(0)?, ptr_ty, 0)?;
- let ptr = realloc_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- ptr,
- realloc_size,
- location,
+ let value = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context, value, value_size, location,
)?)?;
- // No need to memmove, guaranteed by the fact that if we needed to memmove we'd have gone
- // through the memmove block instead of reallocating.
-
- let value = realloc_block.insert_value(context, location, entry.arg(0)?, ptr, 0)?;
- let value = realloc_block.insert_value(context, location, value, new_capacity, 3)?;
-
- realloc_block.append_operation(cf::br(append_block, &[value], location));
- }
-
- {
- let ptr = append_block.extract_value(context, location, append_block.arg(0)?, ptr_ty, 0)?;
- let array_end =
- append_block.extract_value(context, location, append_block.arg(0)?, len_ty, 2)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- let offset =
- append_block.extui(array_end, IntegerType::new(context, 64).into(), location)?;
- let offset = append_block.muli(offset, elem_stride, location)?;
- let ptr = append_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ let array_start_offset = valid_block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
location,
))?;
+ let array_start_offset = valid_block.append_op_result(arith::muli(
+ array_start_offset,
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?,
+ location,
+ ))?;
+ let array_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(array_start_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- append_block.store(context, location, ptr, entry.arg(1)?)?;
-
- let array_len = append_block.addi(array_end, k1, location)?;
- let value =
- append_block.insert_value(context, location, append_block.arg(0)?, array_len, 2)?;
-
- append_block.append_operation(helper.br(0, &[value], location));
- }
-
- Ok(())
-}
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let src_ptr = array_ptr;
+ let dst_ptr = value;
+
+ let value = block.load(context, location, src_ptr, tuple_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, src_ptr, values.0)?;
+ block.store(context, location, dst_ptr, values.1)?;
+ }
+ _ => block.memcpy(context, location, array_ptr, value, value_size),
+ }
-/// Generate MLIR operations for the `array_len` libfunc.
-pub fn build_len<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ // The following unwrap should be unreachable because an array always has a drop
+ // implementation.
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_value = entry.arg(0)?;
+ block.memcpy(context, location, array_ptr, value, value_size);
- let array_start = entry.extract_value(context, location, array_value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, array_value, len_ty, 2)?;
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ valid_block.append_operation(helper.br(0, &[value], location));
+ }
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta)
- if drop_overrides_meta.is_overriden(&info.signature.param_signatures[0].ty) =>
- {
- drop_overrides_meta.invoke_override(
+ {
+ metadata
+ .get::<DropOverridesMeta>()
+ .ok_or(Error::MissingMetadata)?
+ .invoke_override(
context,
- entry,
+ error_block,
location,
&info.signature.param_signatures[0].ty,
- entry.arg(0)?,
+ entry.argument(0)?.into(),
)?;
- }
- _ => {}
+
+ error_block.append_operation(helper.br(1, &[], location));
}
- entry.append_operation(helper.br(0, &[array_len], location));
Ok(())
}
-/// Generate MLIR operations for the `array_get` libfunc.
-pub fn build_get<'ctx, 'this>(
+/// Generate MLIR operations for the `array_append` libfunc.
+pub fn build_append<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
@@ -2886,720 +3375,1116 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = super::increment_builtin_counter(context, entry, location, entry.arg(0)?)?;
-
- let array_ty = registry.build_type(
+ /*
+ * 1. Check if shared.
+ * 2. If shared:
+ * 1. Deep clone with space for at least 1 extra element.
+ * 3. If not shared:
+ * 1. Either realloc, move or do nothing.
+ * 4. Append element.
+ */
+
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
+
+ let self_ty = registry.build_type(
context,
helper,
registry,
metadata,
- &info.param_signatures()[1].ty,
+ &info.signature.param_signatures[0].ty,
)?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
- let elem_stride = elem_layout.pad_to_align().size();
- let elem_ty = elem_ty.build(context, helper, registry, metadata, &info.ty)?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride = entry.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let value = entry.arg(1)?;
- let index = entry.arg(2)?;
+ let k0 = entry.const_int(context, location, 0, 32)?;
+ let k1 = entry.const_int(context, location, 1, 32)?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
+ let array_ptr = entry.extract_value(context, location, entry.argument(0)?.into(), ptr_ty, 0)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
+ let array_capacity =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 3)?;
let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let is_valid = entry.cmpi(context, CmpiPredicate::Ult, index, array_len, location)?;
+ let array_size = entry.append_op_result(arith::extui(
+ array_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let array_size = entry.append_op_result(arith::muli(array_size, elem_stride, location))?;
- let valid_block = helper.append_block(Block::new(&[]));
- let error_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let data_offset = entry.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let data_offset = entry.append_op_result(arith::muli(data_offset, elem_stride, location))?;
+ let data_ptr = entry.gep(
context,
- is_valid,
- valid_block,
- error_block,
- &[],
- &[],
location,
- ));
+ array_ptr,
+ &[GepIndex::Value(data_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- {
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ fn compute_next_capacity<'ctx, 'this>(
+ context: &'ctx Context,
+ block: &'this Block<'ctx>,
+ location: Location<'ctx>,
+ elem_stride: Value<'ctx, 'this>,
+ array_end: Value<'ctx, 'this>,
+ ) -> Result<(Value<'ctx, 'this>, Value<'ctx, 'this>)> {
+ let len_ty = IntegerType::new(context, 32).into();
+
+ let k1 = block.const_int_from_type(context, location, 1, len_ty)?;
+ let k8 = block.const_int_from_type(context, location, 8, len_ty)?;
+ let k1024 = block.const_int_from_type(context, location, 1024, len_ty)?;
+
+ let realloc_len = block.append_op_result(arith::shli(array_end, k1, location))?;
+ let realloc_len = block.append_op_result(arith::minui(realloc_len, k1024, location))?;
+ let realloc_len = block.append_op_result(arith::addi(realloc_len, array_end, location))?;
+ let realloc_len = block.append_op_result(arith::maxui(realloc_len, k8, location))?;
+
+ let realloc_size = block.append_op_result(arith::extui(
+ realloc_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let realloc_size =
+ block.append_op_result(arith::muli(realloc_size, elem_stride, location))?;
- let array_start =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let index = {
- let index = valid_block.extui(index, IntegerType::new(context, 64).into(), location)?;
- valid_block.addi(array_start, index, location)?
- };
+ Result::Ok((realloc_len, realloc_size))
+ }
- let elem_stride = valid_block.const_int(context, location, elem_stride, 64)?;
- let elem_offset = valid_block.muli(elem_stride, index, location)?;
+ let is_empty = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Eq,
+ array_capacity,
+ k0,
+ location,
+ ))?;
- let elem_ptr = valid_block.gep(
- context,
- location,
- ptr,
- &[GepIndex::Value(elem_offset)],
- IntegerType::new(context, 8).into(),
- )?;
+ let is_shared = entry.append_op_result(scf::r#if(
+ is_empty,
+ &[IntegerType::new(context, 1).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
+ let k0 = block.const_int(context, location, 0, 1)?;
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
- location,
- target_ptr,
- "realloc returned nullptr",
- )?;
+ block.append_operation(scf::r#yield(&[k0], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- // There's no need to clone it since we're moving it out of the array.
- valid_block.memcpy(context, location, elem_ptr, target_ptr, elem_size);
+ let is_shared = is_shared(context, entry, location, array_ptr, elem_layout)?;
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
- let array_end =
- valid_block.extui(array_end, IntegerType::new(context, 64).into(), location)?;
+ block.append_operation(scf::r#yield(&[is_shared], location));
+ region
+ },
+ location,
+ ))?;
- let array_start = valid_block.muli(array_start, elem_stride, location)?;
- let array_end = valid_block.muli(array_end, elem_stride, location)?;
+ let value = entry.append_op_result(scf::r#if(
+ is_shared,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- valid_block.append_operation(scf::r#for(
- array_start,
- array_end,
- elem_stride,
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
+ let has_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ugt,
+ array_capacity,
+ array_len,
+ location,
+ ))?;
- let value_ptr = block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[block.arg(0)?],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ let op = block.append_operation(scf::r#if(
+ has_space,
+ &[len_ty, IntegerType::new(context, 64).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let is_target_element = block.append_op_result(
- ods::llvm::icmp(
- context,
- IntegerType::new(context, 1).into(),
- value_ptr,
- elem_ptr,
- IntegerAttribute::new(IntegerType::new(context, 64).into(), 0)
- .into(),
- location,
- )
- .into(),
- )?;
- block.append_operation(scf::r#if(
- is_target_element,
- &[],
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[]));
+ let clone_size = block.append_op_result(arith::extui(
+ array_capacity,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let clone_size =
+ block.append_op_result(arith::muli(clone_size, elem_stride, location))?;
+
+ block.append_operation(scf::r#yield(&[array_capacity, clone_size], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let (realloc_capacity, realloc_size) =
+ compute_next_capacity(context, &block, location, elem_stride, array_end)?;
+
+ block.append_operation(scf::r#yield(
+ &[realloc_capacity, realloc_size],
+ location,
+ ));
+ region
+ },
+ location,
+ ));
+ let clone_capacity = op.result(0)?.into();
+ let clone_size = op.result(1)?.into();
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[]));
+ let clone_size_with_refcount = block.append_op_result(arith::addi(
+ clone_size,
+ block.const_int(context, location, calc_refcount_offset(elem_layout), 64)?,
+ location,
+ ))?;
- let value = block.load(context, location, value_ptr, elem_ty)?;
- drop_overrides_meta
- .invoke_override(context, &block, location, &info.ty, value)?;
+ let clone_ptr = block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let clone_ptr = block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ clone_ptr,
+ clone_size_with_refcount,
+ location,
+ )?)?;
+ block.store(context, location, clone_ptr, k1)?;
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- location,
- ));
+ let clone_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- location,
- ));
- }
- _ => {}
- }
- valid_block.append_operation(ReallocBindingsMeta::free(context, ptr, location)?);
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let k0 = block.const_int(context, location, 0, 64)?;
+ block.append_operation(scf::r#for(
+ k0,
+ array_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
- valid_block.append_operation(helper.br(0, &[range_check, target_ptr], location));
- }
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, array_ptr, clone_ptr, clone_size),
+ }
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
- context,
- error_block,
- location,
- &info.param_signatures()[1].ty,
- value,
- )?;
- error_block.append_operation(helper.br(1, &[range_check], location));
+ let clone_value = block.append_op_result(llvm::zero(self_ty, location))?;
+ let clone_value = block.insert_values(
+ context,
+ location,
+ clone_value,
+ &[clone_ptr, k0, array_len, clone_capacity],
+ )?;
- Ok(())
-}
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
-/// Generate MLIR operations for the `array_pop_front` libfunc.
-pub fn build_pop_front<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ block.append_operation(scf::r#yield(&[clone_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let has_tail_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ult,
+ array_end,
+ array_capacity,
+ location,
+ ))?;
+ let array_value = block.append_op_result(scf::r#if(
+ has_tail_space,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.append_operation(scf::r#yield(&[entry.argument(0)?.into()], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let has_head_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ugt,
+ array_start,
+ k0,
+ location,
+ ))?;
+ let array_value = block.append_op_result(scf::r#if(
+ has_head_space,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.append_operation(
+ ods::llvm::intr_memmove(
+ context,
+ array_ptr,
+ data_ptr,
+ array_size,
+ IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
+ location,
+ )
+ .into(),
+ );
+
+ let array_value = block.insert_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ k0,
+ 1,
+ )?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 2)?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let offset_array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let array_ptr = block.append_op_result(arith::select(
+ is_empty,
+ array_ptr,
+ offset_array_ptr,
+ location,
+ ))?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let (realloc_len, realloc_size) = compute_next_capacity(
+ context,
+ &block,
+ location,
+ elem_stride,
+ array_end,
+ )?;
+ let realloc_size_with_refcount =
+ block.append_op_result(arith::addi(
+ realloc_size,
+ block.const_int(
+ context,
+ location,
+ calc_refcount_offset(elem_layout),
+ 64,
+ )?,
+ location,
+ ))?;
+
+ let array_ptr =
+ block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ array_ptr,
+ realloc_size_with_refcount,
+ location,
+ )?)?;
+
+ let ref_count = block.load(context, location, array_ptr, len_ty)?;
+ let ref_count = block.append_op_result(arith::select(
+ is_empty, k1, ref_count, location,
+ ))?;
+ block.store(context, location, array_ptr, ref_count)?;
+
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let array_value = block.insert_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ array_ptr,
+ 0,
+ )?;
+ let array_value = block.insert_value(
+ context,
+ location,
+ array_value,
+ realloc_len,
+ 3,
+ )?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
- let value = entry.arg(0)?;
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
+ let array_ptr = entry.extract_value(context, location, value, ptr_ty, 0)?;
let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
-
- let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let data_offset = entry.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let data_offset = entry.append_op_result(arith::muli(data_offset, elem_stride, location))?;
+ let data_ptr = entry.gep(
context,
- is_empty,
- empty_block,
- valid_block,
- &[],
- &[],
location,
- ));
-
- {
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
-
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
-
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
- location,
- target_ptr,
- "realloc returned nullptr",
- )?;
-
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
-
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_start = valid_block.addi(array_start, k1, location)?;
- let value = valid_block.insert_value(context, location, value, new_start, 1)?;
+ array_ptr,
+ &[GepIndex::Value(data_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ entry.store(context, location, data_ptr, entry.argument(1)?.into())?;
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
- }
+ let array_end = entry.append_op_result(arith::addi(array_end, k1, location))?;
+ let value = entry.insert_value(context, location, value, array_end, 2)?;
- empty_block.append_operation(helper.br(1, &[value], location));
+ entry.append_operation(helper.br(0, &[value], location));
Ok(())
}
-/// Generate MLIR operations for the `array_pop_front_consume` libfunc.
-pub fn build_pop_front_consume<'ctx, 'this>(
+#[derive(Clone, Copy)]
+enum PopInfo<'a> {
+ Single(&'a SignatureAndTypeConcreteLibfunc),
+ Multi(&'a ConcreteMultiPopLibfunc),
+}
+
+/// Generate MLIR operations for the `array_pop_*` libfuncs.
+///
+/// Template arguments:
+/// - Consume: Whether to consume or not the array on failure.
+/// - Reverse: False for front-popping, true for back-popping.
+///
+/// The `info` argument contains how many items to pop.
+fn build_pop<'ctx, 'this, const CONSUME: bool, const REVERSE: bool>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
+ info: PopInfo,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ /*
+ * 1. Check if there's enough data to pop.
+ * 2. If there is not enough data, maybe consume and return.
+ * 3. Allocate output.
+ * 4. Clone or copy the popped data.
+ * - Clone if shared.
+ * - Copy if not shared.
+ */
+
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
+
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let (self_ty, elem_ty, array_value, extract_len, mut branch_values) = match info {
+ PopInfo::Single(info) => (
+ &info.signature.param_signatures[0].ty,
+ &info.ty,
+ entry.argument(0)?.into(),
+ 1,
+ Vec::new(),
+ ),
+ PopInfo::Multi(ConcreteMultiPopLibfunc {
+ popped_ty,
+ signature,
+ }) => {
+ let range_check = super::increment_builtin_counter(
+ context,
+ entry,
+ location,
+ entry.argument(0)?.into(),
+ )?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let CoreTypeConcrete::Snapshot(InfoAndTypeConcreteType { ty, .. }) =
+ registry.get_type(&signature.param_signatures[1].ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+
+ let CoreTypeConcrete::Array(InfoAndTypeConcreteType { ty, .. }) =
+ registry.get_type(ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+
+ let CoreTypeConcrete::Struct(info) = registry.get_type(popped_ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+ debug_assert!(info.members.iter().all(|member_ty| member_ty == ty));
+
+ (
+ &signature.param_signatures[1].ty,
+ ty,
+ entry.argument(1)?.into(),
+ info.members.len(),
+ vec![range_check],
+ )
+ }
+ };
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ registry.build_type(context, helper, registry, metadata, self_ty)?;
+ let extract_len_value = entry.const_int_from_type(context, location, extract_len, len_ty)?;
- let value = entry.arg(0)?;
+ let (elem_type, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, elem_ty)?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
+ let array_start = entry.extract_value(context, location, array_value, len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, array_value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let has_enough_data = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ule,
+ extract_len_value,
+ array_len,
+ location,
+ ))?;
let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
+ let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
- is_empty,
- empty_block,
+ has_enough_data,
valid_block,
+ error_block,
&[],
&[],
location,
));
{
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ // Clone branch_values so that it doesn't interfere with the other branch.
+ let mut branch_values = branch_values.clone();
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
-
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
+ let value_size = valid_block.const_int(
context,
- valid_block,
location,
- target_ptr,
- "realloc returned nullptr",
+ elem_layout.pad_to_align().size() * extract_len,
+ 64,
)?;
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
+ let value_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context, value_ptr, value_size, location,
+ )?)?;
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_start = valid_block.addi(array_start, k1, location)?;
- let value = valid_block.insert_value(context, location, value, new_start, 1)?;
+ let array_ptr = valid_block.extract_value(context, location, array_value, ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
- }
+ let data_ptr = {
+ let offset_elems = if REVERSE {
+ valid_block.append_op_result(arith::subi(array_end, extract_len_value, location))?
+ } else {
+ array_start
+ };
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
- context,
- empty_block,
- location,
- &info.param_signatures()[0].ty,
- value,
- )?;
- empty_block.append_operation(helper.br(1, &[], location));
-
- Ok(())
-}
-
-/// Generate MLIR operations for the `array_snapshot_pop_front` libfunc.
-pub fn build_snapshot_pop_front<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- build_pop_front(context, registry, entry, location, helper, metadata, info)
-}
+ let offset = valid_block.append_op_result(arith::extui(
+ offset_elems,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
+ let offset =
+ valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
-/// Generate MLIR operations for the `array_snapshot_pop_back` libfunc.
-pub fn build_snapshot_pop_back<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?
+ };
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let new_array_ptr = valid_block.append_op_result(scf::r#if(
+ is_shared,
+ &[ptr_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let k0 = block.const_int(context, location, 0, 64)?;
+ let k1 = block.const_int_from_type(context, location, 1, len_ty)?;
+
+ let elem_stride =
+ block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(elem_ty) => {
+ block.append_operation(scf::r#for(
+ k0,
+ value_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ value_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_type)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, elem_ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, data_ptr, value_ptr, value_size),
+ }
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let array_ptr = {
+ let array_len_bytes =
+ block.append_op_result(arith::subi(array_len, k1, location))?;
+ let array_len_bytes = block.append_op_result(arith::extui(
+ array_len_bytes,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let array_len_bytes = block.append_op_result(arith::muli(
+ array_len_bytes,
+ elem_stride,
+ location,
+ ))?;
+ let array_len_bytes = block.append_op_result(arith::addi(
+ array_len_bytes,
+ block.const_int(
+ context,
+ location,
+ calc_refcount_offset(elem_layout),
+ 64,
+ )?,
+ location,
+ ))?;
+
+ let clone_ptr = block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let clone_ptr = block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ clone_ptr,
+ array_len_bytes,
+ location,
+ )?)?;
+ block.store(context, location, clone_ptr, k1)?;
+
+ let clone_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let data_ptr = if REVERSE {
+ data_ptr
+ } else {
+ let offset = block.append_op_result(arith::extui(
+ extract_len_value,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset =
+ block.append_op_result(arith::muli(offset, elem_stride, location))?;
- let value = entry.arg(0)?;
+ block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?
+ };
+
+ let others_len = block.append_op_result(arith::subi(
+ array_len,
+ extract_len_value,
+ location,
+ ))?;
+ let others_len = block.append_op_result(arith::extui(
+ others_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let others_size =
+ block.append_op_result(arith::muli(others_len, elem_stride, location))?;
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) => {
+ block.append_operation(scf::r#for(
+ k0,
+ others_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value =
+ block.load(context, location, source_ptr, elem_type)?;
+ let values = dup_overrides_meta.invoke_override(
+ context, &block, location, elem_ty, value,
+ )?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, data_ptr, clone_ptr, others_size),
+ }
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(context, &block, location, self_ty, array_value)?;
- let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
- context,
- is_empty,
- empty_block,
- valid_block,
- &[],
- &[],
- location,
- ));
+ clone_ptr
+ };
- {
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_end = valid_block.append_op_result(arith::subi(array_end, k1, location))?;
+ block.append_operation(scf::r#yield(&[array_ptr], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ block.memcpy(context, location, data_ptr, value_ptr, value_size);
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(new_end, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ block.append_operation(scf::r#yield(&[array_ptr], location));
+ region
+ },
location,
))?;
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
+ let array_value =
+ valid_block.insert_value(context, location, array_value, new_array_ptr, 0)?;
+
+ let has_realloc = valid_block.append_op_result(
+ ods::llvm::icmp(
+ context,
+ IntegerType::new(context, 1).into(),
+ array_ptr,
+ new_array_ptr,
+ IntegerAttribute::new(IntegerType::new(context, 64).into(), 1).into(),
+ location,
+ )
+ .into(),
)?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
+ let array_value = valid_block.append_op_result(scf::r#if(
+ has_realloc,
+ &[array_value.r#type()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let k0 = block.const_int_from_type(context, location, 0, len_ty)?;
+ let array_len =
+ block.append_op_result(arith::subi(array_len, extract_len_value, location))?;
+
+ let array_value = block.insert_value(context, location, array_value, k0, 1)?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 2)?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 3)?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let array_value = if REVERSE {
+ let array_end = block.append_op_result(arith::subi(
+ array_end,
+ extract_len_value,
+ location,
+ ))?;
+ block.insert_value(context, location, array_value, array_end, 2)?
+ } else {
+ let array_start = block.append_op_result(arith::addi(
+ array_start,
+ extract_len_value,
+ location,
+ ))?;
+ block.insert_value(context, location, array_value, array_start, 1)?
+ };
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
location,
- target_ptr,
- "realloc returned nullptr",
- )?;
+ ))?;
+
+ branch_values.push(array_value);
+ branch_values.push(value_ptr);
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
+ valid_block.append_operation(helper.br(0, &branch_values, location));
+ }
- let value = valid_block.insert_value(context, location, value, new_end, 2)?;
+ {
+ if CONSUME {
+ let self_ty = match info {
+ PopInfo::Single(info) => &info.signature.param_signatures[0].ty,
+ PopInfo::Multi(info) => &info.signature.param_signatures[1].ty,
+ };
+
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(context, error_block, location, self_ty, array_value)?;
+ } else {
+ branch_values.push(array_value);
+ }
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
+ error_block.append_operation(helper.br(1, &branch_values, location));
}
- empty_block.append_operation(helper.br(1, &[value], location));
Ok(())
}
-pub fn build_snapshot_multi_pop_front<'ctx, 'this>(
+/// Generate MLIR operations for the `array_get` libfunc.
+pub fn build_get<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
- info: &ConcreteMultiPopLibfunc,
+ info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = entry.arg(0)?;
-
- // Get type information
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let array_ty = registry.build_type(
+ // Build the type so that the drop impl invocation works properly.
+ registry.build_type(
context,
helper,
registry,
metadata,
- &info.param_signatures()[1].ty,
+ &info.signature.param_signatures[1].ty,
)?;
- let popped_cty = registry.get_type(&info.popped_ty)?;
- let popped_size = popped_cty.layout(registry)?.size();
- let popped_size_value = entry.const_int(context, location, popped_size, 64)?;
-
- let popped_ctys = popped_cty
- .fields()
- .expect("popped type should be a tuple (ergo, has fields)");
- let popped_len = popped_ctys.len();
-
- let array_ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let array_start_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_end_ty = crate::ffi::get_struct_field_type_at(&array_ty, 2);
+ let range_check =
+ super::increment_builtin_counter(context, entry, location, entry.argument(0)?.into())?;
- // Get array information
+ let array_start =
+ entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 2)?;
- let array = entry.arg(1)?;
- let array_ptr = entry.extract_value(context, location, array, array_ptr_ty, 0)?;
- let array_start = entry.extract_value(context, location, array, array_start_ty, 1)?;
- let array_end = entry.extract_value(context, location, array, array_end_ty, 2)?;
-
- // Check if operation is valid:
- // if array.end - array.start < popped_len {
- // return
- // }
-
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let popped_len_value = entry.const_int(context, location, popped_len, 32)?;
- let is_valid = entry.cmpi(
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let is_valid = entry.append_op_result(arith::cmpi(
context,
- CmpiPredicate::Uge,
+ CmpiPredicate::Ult,
+ entry.argument(2)?.into(),
array_len,
- popped_len_value,
location,
- )?;
+ ))?;
let valid_block = helper.append_block(Block::new(&[]));
- let invalid_block = helper.append_block(Block::new(&[]));
-
+ let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
is_valid,
valid_block,
- invalid_block,
+ error_block,
&[],
&[],
location,
));
{
- // Get pointer to first element to pop
-
- let popped_ptr = {
- let single_popped_ty =
- registry.build_type(context, helper, registry, metadata, &popped_ctys[0])?;
-
- valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- array_ptr,
- &[array_start],
- single_popped_ty,
- llvm::r#type::pointer(context, 0),
- location,
- ))?
- };
-
- // Allocate memory for return array
-
- let return_ptr = {
- let null_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- null_ptr,
- popped_size_value,
- location,
- )?)?
- };
-
- valid_block.memcpy(context, location, popped_ptr, return_ptr, popped_size_value);
-
- // Update array start (removing popped elements)
-
- let array = {
- let new_array_start = valid_block.addi(array_start, popped_len_value, location)?;
-
- valid_block.insert_value(context, location, array, new_array_start, 1)?
- };
-
- valid_block.append_operation(helper.br(0, &[range_check, array, return_ptr], location));
- }
-
- invalid_block.append_operation(helper.br(1, &[range_check, array], location));
-
- Ok(())
-}
-
-pub fn build_snapshot_multi_pop_back<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &ConcreteMultiPopLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = entry.arg(0)?;
-
- // Get type information
-
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[1].ty,
- )?;
-
- let popped_cty = registry.get_type(&info.popped_ty)?;
- let popped_size = popped_cty.layout(registry)?.size();
- let popped_size_value = entry.const_int(context, location, popped_size, 64)?;
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let popped_ctys = popped_cty
- .fields()
- .expect("popped type should be a tuple (ergo, has fields)");
- let popped_len = popped_ctys.len();
+ let value_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ value_ptr,
+ elem_stride,
+ location,
+ )?)?;
- let array_ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let array_start_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_end_ty = crate::ffi::get_struct_field_type_at(&array_ty, 2);
+ let array_ptr =
+ valid_block.extract_value(context, location, entry.argument(1)?.into(), ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- // Get array information
+ let offset = valid_block.append_op_result(arith::addi(
+ array_start,
+ entry.argument(2)?.into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::extui(
+ offset,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
- let array = entry.arg(1)?;
- let array_ptr = entry.extract_value(context, location, array, array_ptr_ty, 0)?;
- let array_start = entry.extract_value(context, location, array, array_start_ty, 1)?;
- let array_end = entry.extract_value(context, location, array, array_end_ty, 2)?;
+ let source_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- // Check if operation is valid:
- // if array.end - array.start < popped_len {
- // return
- // }
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, value_ptr, values.1)?;
+ }
+ _ => block.memcpy(context, location, source_ptr, value_ptr, elem_stride),
+ }
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let popped_len_value = entry.const_int(context, location, popped_len, 32)?;
- let is_valid = entry.cmpi(
- context,
- CmpiPredicate::Uge,
- array_len,
- popped_len_value,
- location,
- )?;
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.memcpy(context, location, source_ptr, value_ptr, elem_stride);
+
+ match metadata.get::<DropOverridesMeta>() {
+ Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
+ let drop_loop = |o0, o1| {
+ block.append_operation(scf::r#for(
+ o0,
+ o1,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let value_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(block.argument(0)?.into())],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let value =
+ block.load(context, location, value_ptr, elem_ty)?;
+ drop_overrides_meta.invoke_override(
+ context, &block, location, &info.ty, value,
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let valid_block = helper.append_block(Block::new(&[]));
- let invalid_block = helper.append_block(Block::new(&[]));
+ Result::Ok(())
+ };
- entry.append_operation(cf::cond_br(
- context,
- is_valid,
- valid_block,
- invalid_block,
- &[],
- &[],
- location,
- ));
+ let o0 = block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::addi(
+ array_start,
+ entry.argument(2)?.into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::extui(
+ o1,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o0 = block.append_op_result(arith::muli(o0, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
- {
- // Get pointer to first element to pop
+ let o0 = block.append_op_result(arith::addi(o1, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+ }
+ _ => {}
+ }
- let popped_ptr = {
- let single_popped_ty =
- registry.build_type(context, helper, registry, metadata, &popped_ctys[0])?;
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let popped_start =
- valid_block.append_op_result(arith::subi(array_end, popped_len_value, location))?;
+ valid_block.append_operation(helper.br(0, &[range_check, value_ptr], location));
+ }
- valid_block.append_op_result(llvm::get_element_ptr_dynamic(
+ {
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
context,
- array_ptr,
- &[popped_start],
- single_popped_ty,
- llvm::r#type::pointer(context, 0),
+ error_block,
location,
- ))?
- };
-
- // Allocate memory for return array
-
- let return_ptr = {
- let null_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
)?;
- valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- null_ptr,
- popped_size_value,
- location,
- )?)?
- };
-
- valid_block.memcpy(context, location, popped_ptr, return_ptr, popped_size_value);
- // Update array end (removing popped elements)
-
- let array = {
- let new_array_end =
- valid_block.append_op_result(arith::subi(array_end, popped_len_value, location))?;
-
- valid_block.insert_value(context, location, array, new_array_end, 2)?
- };
-
- valid_block.append_operation(helper.br(0, &[range_check, array, return_ptr], location));
+ error_block.append_operation(helper.br(1, &[range_check], location));
}
- invalid_block.append_operation(helper.br(1, &[range_check, array], location));
-
Ok(())
}
@@ -3613,39 +4498,61 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- let range_check = super::increment_builtin_counter(context, entry, location, entry.arg(0)?)?;
+ // Signature:
+ // Params: RangeCheck, Snapshot<Array<felt252>>, u32, u32
+ // Branches:
+ // 0: RangeCheck, Snapshot<Array<felt252>>
+ // 1: RangeCheck
+ let ptr_ty = llvm::r#type::pointer(context, 0);
let len_ty = IntegerType::new(context, 32).into();
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let self_ty = registry.build_type(
+ context,
+ helper,
+ registry,
+ metadata,
+ &info.signature.param_signatures[1].ty,
+ )?;
+
+ let range_check =
+ super::increment_builtin_counter(context, entry, location, entry.argument(0)?.into())?;
- let array_start = entry.extract_value(context, location, entry.arg(1)?, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, entry.arg(1)?, len_ty, 2)?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
+ let k1 = entry.const_int_from_type(context, location, 1, len_ty)?;
+
+ let array_start =
+ entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 2)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let slice_start = entry.arg(2)?;
- let slice_len = entry.arg(3)?;
- let slice_end = entry.addi(slice_start, slice_len, location)?;
+ let slice_start = entry.argument(2)?.into();
+ let slice_len = entry.argument(3)?.into();
+ let slice_end = entry.append_op_result(arith::addi(slice_start, slice_len, location))?;
- let slice_start = entry.addi(array_start, slice_start, location)?;
- let slice_end = entry.addi(array_start, slice_end, location)?;
- let lhs_bound = entry.cmpi(
+ let slice_lhs_bound = entry.append_op_result(arith::cmpi(
context,
- CmpiPredicate::Uge,
+ CmpiPredicate::Ule,
slice_start,
- array_start,
+ array_len,
location,
- )?;
- let rhs_bound = entry.cmpi(context, CmpiPredicate::Ule, slice_end, array_end, location)?;
-
- let is_valid = entry.append_op_result(arith::andi(lhs_bound, rhs_bound, location))?;
+ ))?;
+ let slice_rhs_bound = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ule,
+ slice_end,
+ array_len,
+ location,
+ ))?;
+ let slice_bounds =
+ entry.append_op_result(arith::andi(slice_lhs_bound, slice_rhs_bound, location))?;
- let slice_block = helper.append_block(Block::new(&[]));
+ let valid_block = helper.append_block(Block::new(&[]));
let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
- is_valid,
- slice_block,
+ slice_bounds,
+ valid_block,
error_block,
&[],
&[],
@@ -3653,89 +4560,229 @@
));
{
- let elem_ty = elem_ty.build(context, helper, registry, metadata, &info.ty)?;
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let value = entry.arg(1)?;
- let value = slice_block.insert_value(context, location, value, slice_start, 1)?;
- let value = slice_block.insert_value(context, location, value, slice_end, 2)?;
+ let slice_size = valid_block.append_op_result(arith::extui(
+ slice_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let slice_size =
+ valid_block.append_op_result(arith::muli(elem_stride, slice_size, location))?;
+ let slice_size_with_offset = valid_block.append_op_result(arith::addi(
+ slice_size,
+ valid_block.const_int(context, location, calc_refcount_offset(elem_layout), 64)?,
+ location,
+ ))?;
- let elem_stride =
- slice_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let prepare = |value| {
- let value = slice_block.extui(value, IntegerType::new(context, 64).into(), location)?;
- slice_block.muli(value, elem_stride, location)
- };
+ let slice_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let slice_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ slice_ptr,
+ slice_size_with_offset,
+ location,
+ )?)?;
+ valid_block.store(context, location, slice_ptr, k1)?;
- let ptr = slice_block.extract_value(
+ let slice_ptr = valid_block.gep(
context,
location,
- entry.arg(1)?,
- llvm::r#type::pointer(context, 0),
- 0,
+ slice_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
)?;
- let make_region = |drop_overrides_meta: &DropOverridesMeta| {
- let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
- let value_ptr = block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[block.arg(0)?],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ let array_ptr =
+ valid_block.extract_value(context, location, entry.argument(1)?.into(), ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- let value = block.load(context, location, value_ptr, elem_ty)?;
- drop_overrides_meta.invoke_override(context, &block, location, &info.ty, value)?;
+ let offset =
+ valid_block.append_op_result(arith::addi(array_start, slice_start, location))?;
+ let offset = valid_block.append_op_result(arith::extui(
+ offset,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
- block.append_operation(scf::r#yield(&[], location));
- Result::Ok(region)
- };
+ let source_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- let array_start = prepare(array_start)?;
- let array_end = prepare(array_end)?;
- let slice_start = prepare(slice_start)?;
- let slice_end = prepare(slice_end)?;
-
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
- slice_block.append_operation(scf::r#for(
- array_start,
- slice_start,
- elem_stride,
- make_region(drop_overrides_meta)?,
- location,
- ));
- slice_block.append_operation(scf::r#for(
- slice_end,
- array_end,
- elem_stride,
- make_region(drop_overrides_meta)?,
- location,
- ));
- }
- _ => {}
- };
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let k0 = valid_block.const_int(context, location, 0, 64)?;
+ valid_block.append_operation(scf::r#for(
+ k0,
+ slice_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ source_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ slice_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
- slice_block.append_operation(helper.br(0, &[range_check, value], location));
- }
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, source_ptr, slice_ptr, slice_size),
+ }
- {
- registry.build_type(
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.memcpy(context, location, source_ptr, slice_ptr, slice_size);
+
+ match metadata.get::<DropOverridesMeta>() {
+ Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
+ let drop_loop = |o0, o1| {
+ block.append_operation(scf::r#for(
+ o0,
+ o1,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let value_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(block.argument(0)?.into())],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let value =
+ block.load(context, location, value_ptr, elem_ty)?;
+ drop_overrides_meta.invoke_override(
+ context, &block, location, &info.ty, value,
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+
+ Result::Ok(())
+ };
+
+ let o0 = block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::addi(
+ array_start,
+ slice_start,
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::extui(
+ o1,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o0 = block.append_op_result(arith::muli(o0, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+
+ let o0 = block.append_op_result(arith::addi(o1, slice_size, location))?;
+ let o1 = block.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+ }
+ _ => {}
+ }
+
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+
+ let slice_value = valid_block.append_op_result(llvm::undef(self_ty, location))?;
+ let slice_value = valid_block.insert_values(
context,
- helper,
- registry,
- metadata,
- &info.signature.param_signatures[1].ty,
+ location,
+ slice_value,
+ &[slice_ptr, k0, slice_len, slice_len],
)?;
- // The metadata get will never fail because an array always has a drop implementation,
- // which at this point is always inserted thanks to the `build_type()` just above.
- metadata
+ valid_block.append_operation(helper.br(0, &[range_check, slice_value], location));
+ }
+
+ {
+ metadata
.get::<DropOverridesMeta>()
.ok_or(Error::MissingMetadata)?
.invoke_override(
@@ -3743,7 +4790,7 @@
error_block,
location,
&info.signature.param_signatures[1].ty,
- entry.arg(1)?,
+ entry.argument(1)?.into(),
)?;
error_block.append_operation(helper.br(1, &[range_check], location));
@@ -3752,309 +4799,137 @@
Ok(())
}
-/// Generate MLIR operations for the `span_from_tuple` libfunc.
-pub fn build_span_from_tuple<'ctx, 'this>(
+/// Generate MLIR operations for the `array_len` libfunc.
+pub fn build_len<'ctx, 'this>(
context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ _registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- // tuple to array span (t,t,t) -> &[t,t,t]
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let struct_type_info = registry.get_type(&info.ty)?;
-
- let struct_ty = registry.build_type(context, helper, registry, metadata, &info.ty)?;
-
- let container: Value = {
- // load box
- entry.load(context, location, entry.arg(0)?, struct_ty)?
- };
- // TODO: Maybe reuse the pointer?
- entry.append_operation(ReallocBindingsMeta::free(context, entry.arg(0)?, location)?);
-
- let fields = struct_type_info.fields().expect("should have fields");
- let (field_ty, field_layout) =
- registry.build_type_with_layout(context, helper, registry, metadata, &fields[0])?;
- let field_stride = field_layout.pad_to_align().size();
-
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.branch_signatures()[0].vars[0].ty,
- )?;
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
-
- let array_len_value = entry.const_int_from_type(context, location, fields.len(), len_ty)?;
-
- let array_container = entry.append_op_result(llvm::undef(array_ty, location))?;
-
- let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
-
- let array_container = entry.insert_value(context, location, array_container, k0, 1)?;
- let array_container =
- entry.insert_value(context, location, array_container, array_len_value, 2)?;
- let array_container =
- entry.insert_value(context, location, array_container, array_len_value, 3)?;
-
- let ptr = entry
- .append_op_result(ods::llvm::mlir_zero(context, pointer(context, 0), location).into())?;
-
- let field_size: Value = entry.const_int(context, location, field_stride, 64)?;
- let array_len_value_i64 = entry.extui(array_len_value, field_size.r#type(), location)?;
- let total_size = entry.muli(field_size, array_len_value_i64, location)?;
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr = entry.append_op_result(ReallocBindingsMeta::realloc(
- context, ptr, total_size, location,
- )?)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
- for (i, _) in fields.iter().enumerate() {
- let value: Value = entry.extract_value(context, location, container, field_ty, i)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let target_ptr = entry.append_op_result(llvm::get_element_ptr(
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
context,
- ptr,
- DenseI32ArrayAttribute::new(context, &[i as i32]),
- field_ty,
- pointer(context, 0),
+ entry,
location,
- ))?;
-
- entry.store(context, location, target_ptr, value)?;
- }
-
- let array_container = entry.insert_value(context, location, array_container, ptr, 0)?;
-
- entry.append_operation(helper.br(0, &[array_container], location));
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
+ entry.append_operation(helper.br(0, &[array_len], location));
Ok(())
}
-fn assert_nonnull<'ctx, 'this>(
+fn calc_refcount_offset(layout: Layout) -> usize {
+ get_integer_layout(32)
+ .align_to(layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size()
+}
+
+fn is_shared<'ctx, 'this>(
context: &'ctx Context,
- entry: &'this Block<'ctx>,
+ block: &'this Block<'ctx>,
location: Location<'ctx>,
- ptr: Value<'ctx, 'this>,
- msg: &str,
-) -> Result<()> {
- let null_ptr =
- entry.append_op_result(ods::llvm::mlir_zero(context, ptr.r#type(), location).into())?;
-
- let ptr_is_not_null = entry.append_op_result(
- ods::llvm::icmp(
+ array_ptr: Value<'ctx, 'this>,
+ elem_layout: Layout,
+) -> Result<Value<'ctx, 'this>> {
+ let k0 = block.const_int(context, location, 0, 64)?;
+ let ptr_as_int = block.append_op_result(
+ ods::llvm::ptrtoint(
context,
- IntegerType::new(context, 1).into(),
- ptr,
- null_ptr,
- IntegerAttribute::new(IntegerType::new(context, 64).into(), 1).into(),
+ IntegerType::new(context, 64).into(),
+ array_ptr,
location,
)
.into(),
)?;
-
- entry.append_operation(cf::assert(context, ptr_is_not_null, msg, location));
- Ok(())
-}
-
-pub fn build_tuple_from_span<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- // Tasks:
- // - Check if sizes match.
- // - If they do not match, jump to branch [1].
- // - If they do match:
- // - If start == 0 && capacity == len -> reuse the pointer
- // - Otherwise, realloc + memcpy + free.
-
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let array_ty = registry.get_type(&info.signature.param_signatures[0].ty)?;
- let (elem_id, elem_ty) = match array_ty {
- CoreTypeConcrete::Array(info) => (&info.ty, registry.get_type(&info.ty)?),
- CoreTypeConcrete::Snapshot(info) => match registry.get_type(&info.ty)? {
- CoreTypeConcrete::Array(info) => (&info.ty, registry.get_type(&info.ty)?),
- _ => native_panic!(
- "matched an unexpected CoreTypeConcrete that is not a Array or Snapshot"
- ),
- },
- _ => {
- native_panic!("matched an unexpected CoreTypeConcrete that is not a Array or Snapshot")
- }
- };
- let elem_layout = elem_ty.layout(registry)?;
-
- let array_start = entry.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 1,
- )?;
- let array_end = entry.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 2,
- )?;
-
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let (tuple_len, tuple_len_val) = {
- let fields = registry
- .get_type(&info.ty)?
- .fields()
- .to_native_assert_error("missing field")?;
-
- native_assert!(
- fields.iter().all(|f| f.id == elem_id.id),
- "all the elements of the array must have the same type"
- );
-
- (
- entry.const_int(context, location, fields.len(), 32)?,
- fields.len(),
- )
- };
-
- let len_matches = entry.cmpi(context, CmpiPredicate::Eq, array_len, tuple_len, location)?;
-
- let block_ok = helper.append_block(Block::new(&[]));
- let block_err = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let ptr_is_null = block.append_op_result(arith::cmpi(
context,
- len_matches,
- block_ok,
- block_err,
- &[],
- &[],
+ CmpiPredicate::Eq,
+ ptr_as_int,
+ k0,
location,
- ));
-
- {
- let k0 = block_ok.const_int(context, location, 0, 32)?;
- let starts_at_zero =
- block_ok.cmpi(context, CmpiPredicate::Eq, array_start, k0, location)?;
-
- let array_cap = block_ok.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 3,
- )?;
- let capacity_matches =
- block_ok.cmpi(context, CmpiPredicate::Eq, array_cap, tuple_len, location)?;
+ ))?;
- let array_ptr = block_ok.extract_value(
- context,
- location,
- entry.arg(0)?,
- llvm::r#type::pointer(context, 0),
- 0,
- )?;
- let should_forward_pointer =
- block_ok.append_op_result(arith::andi(starts_at_zero, capacity_matches, location))?;
+ let is_shared = block.append_op_result(scf::r#if(
+ ptr_is_null,
+ &[IntegerType::new(context, 1).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let block_clone = helper.append_block(Block::new(&[]));
- let block_forward = helper.append_block(Block::new(&[]));
- block_ok.append_operation(cf::cond_br(
- context,
- should_forward_pointer,
- block_forward,
- block_clone,
- &[],
- &[],
- location,
- ));
+ let k0 = block.const_int(context, location, 0, 1)?;
+ block.append_operation(scf::r#yield(&[k0], location));
+ region
+ },
{
- let elem_stride =
- block_clone.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let tuple_len =
- block_clone.extui(tuple_len, IntegerType::new(context, 64).into(), location)?;
- let tuple_len = block_clone.muli(tuple_len, elem_stride, location)?;
-
- let box_ptr = block_clone
- .append_op_result(llvm::zero(llvm::r#type::pointer(context, 0), location))?;
- let box_ptr = block_clone.append_op_result(ReallocBindingsMeta::realloc(
- context, box_ptr, tuple_len, location,
- )?)?;
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let elem_offset =
- block_clone.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = block_clone.muli(elem_offset, elem_stride, location)?;
- let elem_ptr = block_clone.append_op_result(llvm::get_element_ptr_dynamic(
+ let array_ptr = block.gep(
context,
+ location,
array_ptr,
- &[elem_offset],
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ )?;
+ let ref_count = block.load(
+ context,
location,
- ))?;
+ array_ptr,
+ IntegerType::new(context, 32).into(),
+ )?;
- block_clone.append_operation(
- ods::llvm::intr_memcpy_inline(
+ #[cfg(debug_assertions)]
+ {
+ let k0 = block.const_int(context, location, 0, 32)?;
+ let is_nonzero = block.append_op_result(arith::cmpi(
context,
- box_ptr,
- elem_ptr,
- IntegerAttribute::new(
- IntegerType::new(context, 64).into(),
- (tuple_len_val * elem_layout.pad_to_align().size()) as i64,
- ),
- IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
+ CmpiPredicate::Ne,
+ ref_count,
+ k0,
location,
- )
- .into(),
- );
-
- block_clone.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
- block_clone.append_operation(helper.br(0, &[box_ptr], location));
- }
+ ))?;
- block_forward.append_operation(helper.br(0, &[array_ptr], location));
- }
-
- {
- registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.signature.param_signatures[0].ty,
- )?;
+ block.append_operation(cf::assert(
+ context,
+ is_nonzero,
+ "ref_count must not be zero",
+ location,
+ ));
+ }
- // The metadata get will never fail because an array always has a drop implementation,
- // which at this point is always inserted thanks to the `build_type()` just above.
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
+ let k1 = block.const_int(context, location, 1, 32)?;
+ let is_shared = block.append_op_result(arith::cmpi(
context,
- block_err,
+ CmpiPredicate::Ne,
+ ref_count,
+ k1,
location,
- &info.signature.param_signatures[0].ty,
- entry.arg(0)?,
- )?;
+ ))?;
- block_err.append_operation(helper.br(1, &[], location));
- }
+ block.append_operation(scf::r#yield(&[is_shared], location));
+ region
+ },
+ location,
+ ))?;
- Ok(())
+ Ok(is_shared)
}
#[cfg(test)]
@@ -4365,7 +5240,6 @@
//data.append(5_u32);
*slice.get(0).unwrap().unbox()
}
-
);
let result = run_program(&program, "run_test", &[]).return_value;
diff --git a/src/cairo_native/metadata/debug_utils.rs.html b/src/cairo_native/metadata/debug_utils.rs.html
index ca4f3df8a..343e1c931 100644
--- a/src/cairo_native/metadata/debug_utils.rs.html
+++ b/src/cairo_native/metadata/debug_utils.rs.html
@@ -1563,7 +1563,7 @@
unsafe extern "C" fn dump_mem_impl(ptr: *const (), len: u64) {
println!("[DEBUG] Memory dump at {ptr:?}:");
for chunk in (0..len).step_by(8) {
- print!(" {ptr:?}:");
+ print!(" {:?}:", ptr.byte_add(chunk as usize));
for offset in chunk..chunk + 8 {
print!(" {:02x}", ptr.byte_add(offset as usize).cast::<u8>().read());
}
diff --git a/src/cairo_native/starknet.rs.html b/src/cairo_native/starknet.rs.html
index 4725ec488..b936c8a27 100644
--- a/src/cairo_native/starknet.rs.html
+++ b/src/cairo_native/starknet.rs.html
@@ -1703,6 +1703,33 @@
1703
1704
1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
//! Starknet related code for `cairo_native`
use serde::{Deserialize, Serialize};
@@ -2245,12 +2272,11 @@
// TODO: Move to the correct place or remove if unused.
pub(crate) mod handler {
use super::*;
- use crate::utils::{libc_free, libc_malloc};
+ use crate::utils::{get_integer_layout, libc_free, libc_malloc};
use std::{
alloc::Layout,
- ffi::c_void,
fmt::Debug,
- mem::{size_of, ManuallyDrop, MaybeUninit},
+ mem::{self, size_of, ManuallyDrop, MaybeUninit},
ptr::{null_mut, NonNull},
};
@@ -2614,7 +2640,17 @@
capacity: 0,
},
_ => {
- let ptr = libc_malloc(Layout::array::<E>(data.len()).unwrap().size()) as *mut E;
+ let refcount_offset = get_integer_layout(32)
+ .align_to(mem::align_of::<E>())
+ .unwrap()
+ .pad_to_align()
+ .size();
+ let ptr = libc_malloc(
+ Layout::array::<E>(data.len()).unwrap().size() + refcount_offset,
+ ) as *mut E;
+
+ ptr.cast::<u32>().write(1);
+ let ptr = ptr.byte_add(refcount_offset);
let len: u32 = data.len().try_into().unwrap();
for (i, val) in data.iter().enumerate() {
@@ -2631,6 +2667,24 @@
}
}
+ unsafe fn drop_mlir_array<E>(data: &ArrayAbi<E>) {
+ if data.ptr.is_null() {
+ return;
+ }
+
+ let refcount_offset = get_integer_layout(32)
+ .align_to(mem::align_of::<E>())
+ .unwrap()
+ .pad_to_align()
+ .size();
+
+ let ptr = data.ptr.byte_sub(refcount_offset);
+ match ptr.cast::<u32>().read() {
+ 1 => libc_free(ptr.cast()),
+ n => ptr.cast::<u32>().write(n - 1),
+ }
+ }
+
fn wrap_error<E>(e: &[Felt]) -> SyscallResultAbi<E> {
SyscallResultAbi {
err: ManuallyDrop::new(SyscallResultAbiErr {
@@ -2673,7 +2727,7 @@
let input_vec: Vec<_> = input.into();
unsafe {
- libc_free(input.ptr as *mut c_void);
+ Self::drop_mlir_array(input);
}
let result = ptr
@@ -2860,7 +2914,7 @@
let calldata_vec: Vec<_> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.deploy(
@@ -2920,7 +2974,7 @@
let calldata_vec: Vec<Felt> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.library_call(class_hash, function_selector, &calldata_vec, gas);
@@ -2954,7 +3008,7 @@
let calldata_vec: Vec<Felt> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.call_contract(address, entry_point_selector, &calldata_vec, gas);
@@ -3028,13 +3082,13 @@
let keys_vec: Vec<_> = keys.into();
unsafe {
- libc_free(keys.ptr as *mut c_void);
+ Self::drop_mlir_array(keys);
}
let data_vec: Vec<_> = data.into();
unsafe {
- libc_free(data.ptr as *mut c_void);
+ Self::drop_mlir_array(data);
}
let result = ptr.emit_event(&keys_vec, &data_vec, gas);
@@ -3061,7 +3115,7 @@
let payload_vec: Vec<_> = payload.into();
unsafe {
- libc_free(payload.ptr as *mut c_void);
+ Self::drop_mlir_array(payload);
}
let result = ptr.send_message_to_l1(to_address, &payload_vec, gas);
@@ -3096,7 +3150,7 @@
let result = ptr.keccak(input_vec, gas);
unsafe {
- libc_free(input.ptr as *mut c_void);
+ Self::drop_mlir_array(input);
}
*result_ptr = match result {
diff --git a/src/cairo_native/types.rs.html b/src/cairo_native/types.rs.html
index b080dc46b..87b16786e 100644
--- a/src/cairo_native/types.rs.html
+++ b/src/cairo_native/types.rs.html
@@ -1011,16 +1011,6 @@
1011
1012
1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
impl<T> CloneToUninit for Twhere
diff --git a/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html b/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html
index 827698b82..20aa63d89 100644
--- a/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html
+++ b/cairo_native/starknet/constant.SYSCALL_HANDLER_VTABLE.html
@@ -1 +1 @@
-SYSCALL_HANDLER_VTABLE in cairo_native::starknet - Rust Constant cairo_native::starknet::SYSCALL_HANDLER_VTABLE
source · pub const SYSCALL_HANDLER_VTABLE: LocalKey<Cell<*mut ()>>;
\ No newline at end of file
+SYSCALL_HANDLER_VTABLE in cairo_native::starknet - Rust Constant cairo_native::starknet::SYSCALL_HANDLER_VTABLE
source · pub const SYSCALL_HANDLER_VTABLE: LocalKey<Cell<*mut ()>>;
\ No newline at end of file
diff --git a/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html b/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html
index 27c59dd32..af5180dc9 100644
--- a/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html
+++ b/cairo_native/starknet/fn.cairo_native__vtable_cheatcode.html
@@ -1,4 +1,4 @@
-cairo_native__vtable_cheatcode in cairo_native::starknet - Rust Function cairo_native::starknet::cairo_native__vtable_cheatcode
source · pub extern "C" fn cairo_native__vtable_cheatcode(
+cairo_native__vtable_cheatcode in cairo_native::starknet - Rust Function cairo_native::starknet::cairo_native__vtable_cheatcode
source · pub extern "C" fn cairo_native__vtable_cheatcode(
result_ptr: &mut ArrayAbi<Felt252Abi>,
selector: &Felt252Abi,
input: &ArrayAbi<Felt252Abi>,
diff --git a/cairo_native/starknet/index.html b/cairo_native/starknet/index.html
index 494cb1417..81181e74c 100644
--- a/cairo_native/starknet/index.html
+++ b/cairo_native/starknet/index.html
@@ -1,2 +1,2 @@
-cairo_native::starknet - Rust Module cairo_native::starknet
source · Expand description
Starknet related code for cairo_native
+cairo_native::starknet - Rust
\ No newline at end of file
diff --git a/help.html b/help.html
index d6fdaa571..a6bb2beac 100644
--- a/help.html
+++ b/help.html
@@ -1 +1 @@
-Help Rustdoc help
Back
\ No newline at end of file
+Help Rustdoc help
Back
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
index 82f7c8c85..46d0914ef 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["cairo_native",{"t":"PPPPPPPPPPPPPPGPPPPPPPPPPPPPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNHNNCNNCNNNNNNNNCNNNNNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHQQHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCNNNNNNNNNNNNNNNNCNNNNNNNNNNOOOOOOOOOOOPEPEGCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHCCCCCCCCPPPPPGPPPGPPPPPPPPPPPPPPPPPPPPIPPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNFFFNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNOONNNOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNCNNNNNNNNNNNNNNNNNNNCNNNNNCCCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNCNNNNNNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNNNMNOOOMNMNNNNNNNNNNNNNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNFFFNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHNNNNNNNNNNNNNNNNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNFJFJSNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNOHNNHHNNNNNNNNNNONNNNNHHHNNHHHNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNNNNHNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNH","n":["Aggressive","Array","BoundedInt","Bytes31","Default","EcPoint","EcState","Enum","Felt252","Felt252Dict","IntRange","Less","None","Null","OptLevel","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","Value","__clone_box","","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","clone","","clone_into","","clone_to_uninit","","cmp","compare","compile","conceal","","context","cyan","","debug","default","deref","","deref_mut","","deserialize","dim","","docs","drop","","eq","","equivalent","","","","","","","","error","execution_result","executor","fg","","fixed","","fmt","","from","","","","","","","","","","","","","","","","","","green","","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","metadata","module","module_to_object","native_assert","native_panic","object_to_shared_lib","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","partial_cmp","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","serialize","starknet","starknet_stub","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","utils","vzip","","whenever","","white","","wrap","","yellow","","debug_name","","","fields","range","tag","value","","","x","y","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","","","green","init","internal_rewrite","","","","","","","into","invert","italic","jit","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AotProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","JitProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","context","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeContext","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile","conceal","context","cyan","default","deref","deref_mut","dim","drop","eq","equivalent","","","","fg","fixed","fmt","from","green","init","initialize_mlir","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","libfunc_to_name","section01","section02","section03","section04","section05","section06","section07","section08","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","IntegerConversion","IntegerLikeTypeExpected","IoError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","LibraryLoadError","LinkError","MissingBuiltinCostsSymbol","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","NativeAssert","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SelectorNotFound","SerdeJsonError","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","fg","","","fixed","","","fmt","","","","","","from","","","","","","","","","","","","","","","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","make_missing_parameter","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","panic","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","source","strike","","","to_smolstr","","","to_string","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","range","value","ranges","NativeAssertError","ToNativeAssertError","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","to_native_assert_error","to_smolstr","to_string","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","","","attr","","","bg","","","bitwise","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","builtin_stats","circuit_add","circuit_mul","clear","","","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize","","","dim","","","drop","","","ec_op","eq","","","equivalent","","","","","","","","","","","","error_msg","failure_flag","fg","","","fixed","","","fmt","","","from","","","from_execution_result","green","","","hash","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","partial_cmp","","pedersen","poseidon","primary","","","quirk","","","range_check","range_check_96","rapid_blink","","","red","","","remaining_gas","","resetting","","","return_value","return_values","rgb","","","segment_arena","serialize","","","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","AotContractExecutor","AotNativeExecutor","JitNativeExecutor","__clone_box","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","clone_into","clone_to_uninit","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","","fg","","","find_function_ptr","","","find_symbol_ptr","","","fixed","","","fmt","","","from","","","from_native_module","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","invoke_contract_dynamic","","invoke_dynamic","","invoke_dynamic_with_syscall_handler","","italic","","","linger","","","load","magenta","","","mask","","","module","new","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","program_registry","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run","save","strike","","","to_owned","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","MetadataStorage","attr","auto_breakpoint","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_utils","default","deref","deref_mut","dim","drop","drop_overrides","dup_overrides","enum_snapshot_variants","fg","fixed","fmt","from","gas","get","get_mut","get_or_insert_with","green","init","insert","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc_bindings","red","remove","resetting","rgb","runtime_bindings","strike","tail_recursion","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","","add_event","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","cyan","","default","deref","","deref_mut","","dim","","drop","","eq","equivalent","","","","fg","","fixed","","fmt","","from","","green","","has_event","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","maybe_breakpoint","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","type_id","variant_idx","DebugUtils","attr","bg","black","blink","blue","bold","borrow","borrow_mut","breakpoint_marker","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_breakpoint_trap","debug_print","default","deref","deref_mut","dim","drop","dump_mem","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","quirk","rapid_blink","red","register_impls","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DropOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DupOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","EnumSnapshotVariantsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","from","get_variants","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","set_mapping","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","","","ap_change_info","attr","","","","bg","","","","black","","","","blink","","","","blue","","","","bold","","","","borrow","","","","borrow_mut","","","","bright","","","","bright_black","","","","bright_blue","","","","bright_cyan","","","","bright_green","","","","bright_magenta","","","","bright_red","","","","bright_white","","","","bright_yellow","","","","clear","","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","","cyan","","","","default","","deref","","","","deref_mut","","","","dim","","","","drop","","","","eq","","","equivalent","","","","","","","","","","","","fg","","","","fixed","","","","fmt","","","","","from","","","","","","function_set_costs","gas_info","get_gas_cost_for_statement_and_cost_token_type","get_gas_costs_for_statement","get_initial_available_gas","green","","","","hash","init","","","","initial_required_gas","initial_required_gas_for_entry_points","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","invert","","","","italic","","","","linear_ap_change_solver","linear_gas_solver","linger","","","","magenta","","","","mask","","","","new","on_black","","","","on_blue","","","","on_bright","","","","on_bright_black","","","","on_bright_blue","","","","on_bright_cyan","","","","on_bright_green","","","","on_bright_magenta","","","","on_bright_red","","","","on_bright_white","","","","on_bright_yellow","","","","on_cyan","","","","on_fixed","","","","on_green","","","","on_magenta","","","","on_primary","","","","on_red","","","","on_rgb","","","","on_white","","","","on_yellow","","","","primary","","","","quirk","","","","rapid_blink","","","","red","","","","resetting","","","","rgb","","","","source","strike","","","","to_owned","","","to_smolstr","to_string","try_from","","","","try_into","","","","type_id","","","","underline","","","","upcast","","","","upcast_mut","","","","vzip","","","","whenever","","","","white","","","","wrap","","","","yellow","","","","gas","ReallocBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","free","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","RuntimeBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dict_drop","dict_dup","dict_gas_refund","dict_get","dict_insert","dict_new","dim","drop","fg","fixed","fmt","from","get_gas_builtin","green","init","internal_rewrite","","","","","","","into","invert","italic","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_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vtable_cheatcode","vzip","whenever","white","wrap","yellow","TailRecursionMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","depth_counter","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","recursion_target","red","resetting","return_target","rgb","set_return_target","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeModule","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get_metadata","green","init","insert_metadata","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","metadata","module","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","program_registry","quirk","rapid_blink","red","remove_metadata","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","","","","","","","","","","account_contract_address","","account_deployment_data","attr","","","","","","","","","","","","bg","","","","","","","","","","","","black","","","","","","","","","","","","blink","","","","","","","","","","","","block_info","","block_number","block_timestamp","blue","","","","","","","","","","","","bold","","","","","","","","","","","","borrow","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","bright","","","","","","","","","","","","bright_black","","","","","","","","","","","","bright_blue","","","","","","","","","","","","bright_cyan","","","","","","","","","","","","bright_green","","","","","","","","","","","","bright_magenta","","","","","","","","","","","","bright_red","","","","","","","","","","","","bright_white","","","","","","","","","","","","bright_yellow","","","","","","","","","","","","cairo_native__vtable_cheatcode","call_contract","","caller_address","","capacity","chain_id","","cheatcode","clear","","","","","","","","","","","","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","","","","","","","compare","","","","","","","conceal","","","","","","","","","","","","contract_address","","cyan","","","","","","","","","","","","default","","","deploy","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","dim","","","","","","","","","","","","drop","","","","","","","","","","","","emit_event","","entry_point_selector","","eq","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fee_data_availability_mode","fg","","","","","","","","","","","","fixed","","","","","","","","","","","","fmt","","","","","","","","","","","from","","","","","","","","","","","","get_block_hash","","get_class_hash_at","","get_execution_info","","get_execution_info_v2","","green","","","","","","","","","","","","hash","","","","","","","","","hi","init","","","","","","","","","","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","invert","","","","","","","","","","","","is_infinity","","italic","","","","","","","","","","","","keccak","","library_call","","linger","","","","","","","","","","","","lo","magenta","","","","","","","","","","","","mask","","","","","","","","","","","","max_amount","max_fee","","max_price_per_unit","new","","nonce","","nonce_data_availability_mode","on_black","","","","","","","","","","","","on_blue","","","","","","","","","","","","on_bright","","","","","","","","","","","","on_bright_black","","","","","","","","","","","","on_bright_blue","","","","","","","","","","","","on_bright_cyan","","","","","","","","","","","","on_bright_green","","","","","","","","","","","","on_bright_magenta","","","","","","","","","","","","on_bright_red","","","","","","","","","","","","on_bright_white","","","","","","","","","","","","on_bright_yellow","","","","","","","","","","","","on_cyan","","","","","","","","","","","","on_fixed","","","","","","","","","","","","on_green","","","","","","","","","","","","on_magenta","","","","","","","","","","","","on_primary","","","","","","","","","","","","on_red","","","","","","","","","","","","on_rgb","","","","","","","","","","","","on_white","","","","","","","","","","","","on_yellow","","","","","","","","","","","","partial_cmp","","","","","","","paymaster_data","primary","","","","","","","","","","","","ptr","quirk","","","","","","","","","","","","rapid_blink","","","","","","","","","","","","red","","","","","","","","","","","","replace_class","","resetting","","","","","","","","","","","","resource","resource_bounds","rgb","","","","","","","","","","","","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","","sequencer_address","serialize","","","","","","","","","sha256_process_block","","signature","","since","storage_read","","storage_write","","strike","","","","","","","","","","","","tip","to_owned","","","","","","","","","","transaction_hash","","try_from","","","","","","","","","","","","try_into","","","","","","","","","","","","tx_info","","type_id","","","","","","","","","","","","underline","","","","","","","","","","","","until","upcast","","","","","","","","","","","","upcast_mut","","","","","","","","","","","","version","","vzip","","","","","","","","","","","","whenever","","","","","","","","","","","","white","","","","","","","","","","","","wrap","","","","","","","","","","","","x","","y","","yellow","","","","","","","","","","","","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","","","attr","","","bg","","","big4int_to_u256","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","call_contract","cheatcode","clear","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","cyan","","","data","decode_felts_as_str","default","","deploy","deref","","","deref_mut","","","dim","","","drop","","","emit_event","encode_str_as_felts","events","","execution_info","fg","","","fixed","","","fmt","","","from","","","get_block_hash","get_class_hash_at","get_execution_info","get_execution_info_v2","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","keccak","keys","l2_to_l1_messages","library_call","linger","","","logs","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","quirk","","","rapid_blink","","","red","","","replace_class","resetting","","","rgb","","","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","sha256_process_block","storage","storage_read","storage_write","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","u256_to_biguint","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","BuiltinCosts","HALF_PRIME","LayoutError","PRIME","SHARED_LIBRARY_EXT","__clone_box","","add_mod","attr","","bg","","bitwise","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cairo_to_sierra","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","const","create_engine","cyan","","debug_with","decode_error_message","default","deref","","deref_mut","","deserialize","dim","","drop","","ecop","eq","equivalent","","","","felt252_bigint","felt252_short_str","felt252_str","fg","","find_entry_point","find_entry_point_by_idx","find_function_id","fixed","","fmt","","","from","","generate_function_name","get_integer_layout","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","layout_repeat","linger","","magenta","","mask","","mem_tracing","mul_mod","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","padding_needed_for","pedersen","poseidon","primary","","quirk","","rapid_blink","","red","","register_runtime_symbols","resetting","","rgb","","run_pass_manager","serialize","strike","","to_owned","","to_smolstr","to_string","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","report_stats"],"q":[[0,"cairo_native"],[251,"cairo_native::Value"],[262,"cairo_native::cache"],[352,"cairo_native::cache::aot"],[437,"cairo_native::cache::jit"],[523,"cairo_native::context"],[615,"cairo_native::debug"],[616,"cairo_native::docs"],[624,"cairo_native::error"],[929,"cairo_native::error::CompilerError"],[931,"cairo_native::error::SierraAssertError"],[932,"cairo_native::error::panic"],[1020,"cairo_native::execution_result"],[1329,"cairo_native::executor"],[1602,"cairo_native::metadata"],[1700,"cairo_native::metadata::auto_breakpoint"],[1885,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[1887,"cairo_native::metadata::debug_utils"],[1982,"cairo_native::metadata::drop_overrides"],[2065,"cairo_native::metadata::dup_overrides"],[2148,"cairo_native::metadata::enum_snapshot_variants"],[2232,"cairo_native::metadata::gas"],[2613,"cairo_native::metadata::gas::GasMetadataError"],[2614,"cairo_native::metadata::realloc_bindings"],[2699,"cairo_native::metadata::runtime_bindings"],[2799,"cairo_native::metadata::tail_recursion"],[2886,"cairo_native::module"],[2975,"cairo_native::starknet"],[4209,"cairo_native::starknet_stub"],[4509,"cairo_native::utils"],[4721,"cairo_native::utils::mem_tracing"],[4722,"dyn_clone::sealed"],[4723,"yansi::attr_quirk"],[4724,"yansi::paint"],[4725,"yansi::color"],[4726,"cairo_native::ffi"],[4727,"cairo_native::values"],[4728,"core::cmp"],[4729,"melior::context"],[4730,"melior::ir::module"],[4731,"cairo_lang_sierra::program"],[4732,"cairo_lang_sierra::extensions::core"],[4733,"cairo_lang_sierra::program_registry"],[4734,"melior::ir::attribute"],[4735,"core::result"],[4736,"serde::de"],[4737,"core::fmt"],[4738,"core::convert"],[4739,"starknet_types_core::felt"],[4740,"core::clone"],[4741,"alloc::vec"],[4742,"core::hash"],[4743,"alloc::boxed"],[4744,"cairo_lang_semantic::substitution"],[4745,"alloc::collections::vec_deque"],[4746,"core::option"],[4747,"cairo_lang_utils::ordered_hash_map"],[4748,"std::path"],[4749,"serde::ser"],[4750,"core::any"],[4751,"yansi::condition"],[4752,"cairo_native::executor::aot"],[4753,"alloc::sync"],[4754,"cairo_native::executor::jit"],[4755,"core::alloc::layout"],[4756,"melior::error"],[4757,"serde_json::error"],[4758,"libloading::error"],[4759,"std::io::error"],[4760,"cairo_lang_sierra::edit_state"],[4761,"core::num::error"],[4762,"cairo_lang_sierra::ids"],[4763,"core::error"],[4764,"smol_str"],[4765,"alloc::string"],[4766,"cairo_native::executor::contract"],[4767,"core::ffi"],[4768,"libloading::safe"],[4769,"cairo_lang_starknet_classes::contract_class"],[4770,"core::ops::function"],[4771,"melior::ir::block"],[4772,"melior::ir::location"],[4773,"melior::ir::value"],[4774,"melior::execution_engine"],[4775,"cairo_lang_sierra_ap_change"],[4776,"cairo_lang_sierra_gas"],[4777,"cairo_lang_sierra::extensions::modules::gas"],[4778,"alloc::collections::btree::map"],[4779,"melior::ir::operation"],[4780,"ark_ff::biginteger"],[4781,"num_bigint::biguint"],[4782,"anyhow"],[4783,"num_bigint::bigint"],[4784,"alloc::borrow"],[4785,"cairo_native::compiler"]],"i":"A`Ab001000000110`0000000000000`101010101010101010101010101010101010`1010101011`10`10`11010010`101011110000```1010101110000000000000001011011111110000000101010101010``````101010101010101010101010101010101010101011010101010100``1010101010101010`1010101010ABjABlABn2AC`2210ACb0Fn`0```000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`Gj00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Gh000000000000000000000000000000000000000000000000000000000000000000000000000000000000`H`0000000000000000000000000000000000000`0000000000000000000000000000000000000000000000000000`````````Hl0Hn1Bh`00Fb`13111111111111110113`111`1113213213213213213213213213213213213213213213213213213213213213213213213213213211332211111111111111321321321111111333333322222221321321321321321132132132132132132132132132132132132132132132132132132132132132`1321321321321321321132132132132132132132132132132132132132132ACd0ACf``In00000000000000000000000000000000000000000000000000000000000000000000000Jn1111111111111```K`KbKd210210221021021021021021021021021021021021021021021012221021021021020202102102021021021021021022102222111100000021021021021002102021022222221111111000000021021021021021021021021021021021021021021021021021021021021021021021021021021020222102102221021010210102102210210210210210210210210210210210210210210```KfHbGl210210210210210210210210210210210210210210210210210222210210210210210210221021021021021021021010210211111110000000222222210210210101010210221021021021021021021021021021021021021021021021021021021021021021021021021102102102102102221022102102102102102102102102102102102`Bb`0000000000000000000`00000```0000`0000000000000000000000000000000000000000000`0000`0`00000000000``M`0Ln010101010101010101010101010101010101010101010100101010101111110101010100110111111100000001010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010ACh0`Mf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ml000000000000000000000000000000000000000000000000000000000000000000000000000000000`Mn000000000000000000000000000000000000000000000000000000000000000000000000000000000`N`0000000000000000000000000000000000000000000000000000000000000000000000000000000000Ij0````0L`NbHd22103210321032103210321032103210321032103210321032103210321032103210321032102102102103210320210321032103210321322221111333321032103210332103330222221031210322222222211111110000000333333321032103210300210321032103221032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103321032103321032103210321032103210321032103210321032103ACj`Nn00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ob00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Of0000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Hf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```On```0`````````OjA@bA@dA@fA@hA@jA@lA@nAA`AAb525A@`Ol;:9876543210;:9876543210;:9876543210;:98765432985510;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:98765432`Kl2:9185021<;:9876543<;:9876543<;:9876543<;:9876543;:98765;:9876521<;:9876543:921<;:9876543;430221<;:987654321<;:9876543;:987654321<;:987654321<;:987654302:9;:9876543;;;;::::9999888877776666555544443333821<;:987654321<;:98765431<;:987654321<;:98765430202020221<;:9876543;:9876543;21<;:987654322222221111111<<<<<<<;;;;;;;:::::::999999988888887777777666666655555554444444333333321<;:987654321<;:98765434321<;:9876543020221<;:9876543;21<;:987654321<;:987654378574385821<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:9876543;:98765821<;:9876543121<;:987654321<;:987654321<;:98765430221<;:98765437821<;:987654302020202020202020202026;:987654302851020221<;:98765438<;:98765438521<;:987654321<;:9876543:921<;:987654321<;:9876543121<;:987654321<;:98765438521<;:987654321<;:987654321<;:987654321<;:9876543434321<;:9876543```AAfAAhAAj210210`210210210210210210210210210210210210210210210222102102102102102101`2022102102102102`2022102102102102222210210222222211111110000000210210210210221022102102102102102102102102102102102102102102102102102102102102102102102102102102210210222222222222222210210210210210`210210210210210210210210`````LdJd110101101010101010101010101010101010`10101010101`10``1101011010100000```10```1010010``101011111110000000101010`101010`11010101010101010101010101010101010101010`1110101010`1010`11010001010101010101010101010`","f":"`````````````````````````````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0222222222222222222`22{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{b{b{nc}}}f{}}0{bf}0{{{b{A`}}{b{A`}}}Ad}{{b{b{c}}}Ad{}}{{{b{Af}}{b{Ah}}{b{Aj}}{b{{B`{AlAn}}}}{b{nBb}}BdBf}{{Bj{fBh}}}}99`99`{{}A`}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ab}}}Bn}==`{Blf}0{{{b{A`}}{b{A`}}}Bf}{{{b{Ab}}{b{Ab}}}Bf}{{b{b{c}}}Bf{}}0000000```{{bl}{{j{{b{c}}}}}{}}0{{bC`}{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nCb}}}Cd}{{{b{Ab}}{b{nCb}}}Cd}{C`A`}{BlA`}{cc{}}{CfAb}1{ChAb}{CjAb}{{{Cl{c}}}Ab{{Cn{Ab}}}}{D`Ab}{DbAb}{{{b{{Dd{c}}}}}Ab{{Cn{Ab}}Df}}{C`Ab}{DhAb}{DjAb}{DlAb}{DnAb}{E`Ab}{{{Eb{c}}}Ab{{Cn{Ab}}}}{b{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}4312650{{}c{}}0::::::::::``{{{b{Ah}}A`}{{Fb{{Eb{C`}}}}}}``{{{b{{Dd{C`}}}}{b{Fd}}}{{Fb{f}}}}<<<<<<<<<<<<<<<<<<<<<<<<{{bC`}{{j{{b{c}}}}}{}}0========{{bC`C`C`}{{j{{b{c}}}}}{}}0>>>>{{{b{A`}}{b{A`}}}{{El{Ad}}}}??{{bFf}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000033{{{b{Ab}}c}BjFh}``11{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}055{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0`>>{{bFl}{{j{{b{c}}}}}{}}0888888`````````````````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{{Fn{c}}}}{b{nCb}}}Cd{G`GbGdGf}}{{{Gh{c}}}{{Fn{c}}}{G`GbGd}}{{{Gj{c}}}{{Fn{c}}}{G`GbGd}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99`999999999999999>9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{n{Gj{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Gl}}}}}{G`GbGd}}33{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gj{c}}}}{b{nCb}}}Cd{G`GbGd}}{cc{}}{{{b{{Gj{c}}}}{b{c}}}{{El{{Gn{Gl}}}}}{G`GbGd}}:{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{H`}}}{{Gj{c}}}{G`GbGd}}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}};;;;43;;;;;;;;;;{{{b{n{Gh{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Hb}}}}}{GbGdG`}}<{{{b{{Gh{c}}}}}{{b{H`}}}{GbGdG`}}={Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}?{Blf}5{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gh{c}}}}{b{nCb}}}Cd{GbGdG`}}{cc{}}{{{b{{Gh{c}}}}{b{c}}}{{El{{Gn{Hb}}}}}{GbGdG`}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{H`}}}{{Gh{c}}}{GbGdG`}}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<<<1<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{H`}}{b{Aj}}Bf{El{Hd}}}{{Bj{HfBh}}}}3{{{b{H`}}}{{b{Af}}}}4{{}H`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}{{{b{H`}}{b{H`}}}Bf}{{b{b{c}}}Bf{}}0008{{bC`}{{j{{b{c}}}}}{}}{{{b{H`}}{b{nCb}}}Cd}{cc{}}={{}Bl}{{}Af}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}H`}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999{{{b{Hh}}}{{b{Hj}}}}`````````````````````````````````````````````{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<555444<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00>>>{Blf}00333{{bC`}{{j{{b{c}}}}}{}}00{{{b{Bh}}{b{nCb}}}Cd}0{{{b{Hl}}{b{nCb}}}Cd}0{{{b{Hn}}{b{nCb}}}Cd}0{I`Bh}{IbBh}{IdBh}{IfBh}{IhBh}{IjBh}{IlBh}{cc{}}{HnBh}{InBh}{HlBh}{J`Bh}{{{Ef{Jb}}}Bh}{JdBh}66{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}65432103240156{{}c{}}00999999999999{{{b{Jf}}}Bh}:::::::::::::::::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}00;;;;;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}00<<<<<<`<<<{{bFf}{{j{{b{c}}}}}{}}00=========111{{{b{Bh}}}{{El{{b{Jh}}}}}}>>>{bJj}00{bJl}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00==={{bFl}{{j{{b{c}}}}}{}}00333333333`````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{In}}{b{nCb}}}Cd}0{cc{}};{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{JlIn}111111111111=1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{{Jn{b{Hj}}}{{Fb{c}}}{}}{bJj}{bJl}{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}9{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}<<<```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00`????????????555444???????????????????????????```???{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{b{b{nc}}}f{}}00{bf}00{{{b{K`}}{b{K`}}}Ad}{{{b{Kd}}{b{Kd}}}Ad}{{b{b{c}}}Ad{}}0{b{{j{{b{c}}}}}{}}00000{{}K`}{{}Kd}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00{c{{Bj{K`}}}Bn}{c{{Bj{Kb}}}Bn}{c{{Bj{Kd}}}Bn}777{Blf}00`{{{b{K`}}{b{K`}}}Bf}{{{b{Kb}}{b{Kb}}}Bf}{{{b{Kd}}{b{Kd}}}Bf}{{b{b{c}}}Bf{}}00000000000``{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nCb}}}Cd}{{{b{Kb}}{b{nCb}}}Cd}{{{b{Kd}}{b{nCb}}}Cd}{cc{}}00{Kb{{Bj{KdBh}}}}{b{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nc}}}fEd}{{{b{Kd}}{b{nc}}}fEd}{{}Bl}00{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}50124360634215{{}c{}}00;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00======{{{b{K`}}{b{K`}}}{{El{Ad}}}}{{{b{Kd}}{b{Kd}}}{{El{Ad}}}}``???{{bFf}{{j{{b{c}}}}}{}}00``{b{{j{{b{c}}}}}{}}00000``000``444`{{{b{K`}}c}BjFh}{{{b{Kb}}c}BjFh}{{{b{Kd}}c}BjFh}333{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00777{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00???{{bFl}{{j{{b{c}}}}}{}}00:::::::::```{{bd}f}{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00============555444=============================={{{b{Kf}}}Kf}{{b{b{nc}}}f{}}{bf}{b{{j{{b{c}}}}}{}}00000{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00222{Blf}00{{{b{nKf}}}f}888{{{b{Hb}}{b{Kh}}}Kj}{{{b{Gl}}{b{Kh}}}{{Bj{KjBh}}}}{{{b{Kf}}{b{Kh}}Bf}{{Bj{KjBh}}}}{{{b{Hb}}{b{Hj}}}{{El{Kj}}}}{{{b{Gl}}{b{Hj}}}{{El{Kj}}}}{{{b{Kf}}{b{Hj}}}{{El{Kj}}}}{{bC`}{{j{{b{c}}}}}{}}00{{{b{Hb}}{b{nCb}}}Cd}{{{b{Gl}}{b{nCb}}}Cd}{{{b{Kf}}{b{nCb}}}Cd}{cc{}}00{{HfA`}{{Bj{HbBh}}}}{{HfA`}{{Bj{GlBh}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}32106450321564{{}c{}}00999{{{b{Hb}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}??????{{{b{Fd}}}{{Bj{KfBh}}}}{b{{j{{b{c}}}}}{}}00000{{{b{Hb}}}{{b{Ah}}}}{{Kn{B`{AlAn}}L`}Gl}{{{b{Aj}}{b{Lb}}A`}{{Bj{KfBh}}}}333333333333333333333333333333333333{{bC`}{{j{{b{c}}}}}{}}00444444444444{{bC`C`C`}{{j{{b{c}}}}}{}}00555555555{{{b{Hb}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}00777777777222{{{b{Kf}}D`{b{{Dd{D`}}}}Dl{El{Ld}}c}{{Bj{KdBh}}}Kl}{{{b{nKf}}c}{{Bj{fBh}}}{{Lf{Fd}}}}999{bc{}}{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00==={b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000`{{bh}{{j{{b{c}}}}}{}}`{{bl}{{j{{b{c}}}}}{}}222265222222222222`{{}Bb}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}```4{{bC`}{{j{{b{c}}}}}{}}{{{b{Bb}}{b{nCb}}}Cd}{cc{}}`{{{b{Bb}}}{{El{{b{c}}}}}Lh}{{{b{nBb}}}{{El{{b{nc}}}}}Lh}{{{b{nBb}}e}{{b{nc}}}Lh{{Ll{}{{Lj{c}}}}}}<{{}Bl}{{{b{nBb}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}Bb}111111111111{{bC`}{{j{{b{c}}}}}{}}2222{{bC`C`C`}{{j{{b{c}}}}}{}}333{{bFf}{{j{{b{c}}}}}{}}4`4{{{b{nBb}}}{{El{c}}}Lh}52`5`{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}8{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}};{{bFl}{{j{{b{c}}}}}{}};;;```{{bd}f}0{{{b{nLn}}M`}f}{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0????????6655????????????????????{{{b{M`}}}M`}{{{b{Ln}}}Ln}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}000{{}Ln}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}033{Blf}0{{{b{M`}}{b{M`}}}Bf}{{b{b{c}}}Bf{}}000;;{{bC`}{{j{{b{c}}}}}{}}0{{{b{M`}}{b{nCb}}}Cd}{{{b{Ln}}{b{nCb}}}Cd}{cc{}}0::{{{b{Ln}}{b{M`}}}Bf}{{{b{M`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}4123056{{}c{}}0{b{{j{{b{c}}}}}{}}000000000{{{b{Ln}}{b{Mb}}Md{b{Bb}}{b{M`}}}{{Bj{fBh}}}}111111111111111111111111{{bC`}{{j{{b{c}}}}}{}}022222222{{bC`C`C`}{{j{{b{c}}}}}{}}0333333{{bFf}{{j{{b{c}}}}}{}}04444441144{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}088{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0;;{{bFl}{{j{{b{c}}}}}{}}0;;;;;;```{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}====43{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{f}}}}>>>>>>>>>>>>{{{b{Mf}}{b{Mb}}Md}{{Fb{f}}}}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}{b{Hj}}Md}{{Fb{f}}}}{{}Mf}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{b{{j{{b{c}}}}}{}}{Blf}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhBlMd}{{Fb{f}}}}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Mf}}{b{nCb}}}Cd}{cc{}}5{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}>>>>>>>>>>>>>>>>>;>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{f}}}}000000{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0{{{b{Mf}}{b{Mj}}}f}141{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}4{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999943999999999999{{}Ml}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Ml}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}222254222222222222{{}Mn}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Mn}}{b{nCb}}}Cd}{cc{}}9{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000000000000000<0000{{bC`C`C`}{{j{{b{c}}}}}{}}111{{bFf}{{j{{b{c}}}}}{}}22212{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}5{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}888`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{{}N`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}={Blf}4{{bC`}{{j{{b{c}}}}}{}}{cc{}}{{{b{N`}}{b{Jf}}}{{El{{b{{Eb{Jf}}}}}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1{{{b{nN`}}{b{Jf}}{b{{Dd{Jf}}}}}f}<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00```````{{bd}f}00`{{bh}{{j{{b{c}}}}}{}}000{{bl}{{j{{b{c}}}}}{}}0003333333333333333666655553333333333333333333333333333333333333333{{{b{L`}}}L`}{{{b{Nb}}}Nb}{{{b{Hd}}}Hd}{{b{b{nc}}}f{}}00{bf}0088888888{{}L`}{{}Hd}{Bl{{b{c}}}{}}000{Bl{{b{nc}}}{}}000<<<<{Blf}000{{{b{L`}}{b{L`}}}Bf}{{{b{Nb}}{b{Nb}}}Bf}{{{b{Ij}}{b{Ij}}}Bf}{{b{b{c}}}Bf{}}00000000000>>>>{{bC`}{{j{{b{c}}}}}{}}000{{{b{L`}}{b{nCb}}}Cd}{{{b{Nb}}{b{nCb}}}Cd}{{{b{Hd}}{b{nCb}}}Cd}{{{b{Ij}}{b{nCb}}}Cd}0{cc{}}00{NdIj}{NfIj}2``{{{b{L`}}NhNj}{{El{Dl}}}}{{{b{L`}}Nh}{{Eb{{F`{DlNj}}}}}}{{{b{L`}}{b{Kh}}{El{Dl}}}{{Bj{DlIj}}}}{b{{j{{b{c}}}}}{}}000{{{b{Nb}}{b{nc}}}fEd}{{}Bl}000{{{b{L`}}{b{Kh}}}{{El{Dl}}}}{{{b{L`}}}{{Fb{{Nl{Dl{Nl{DlDl}}}}}}}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}156042315602431436052{{}c{}}000<<<<<<<<``<<<<<<<<<<<<{{{b{Aj}}{El{Hd}}}{{Bj{L`Ij}}}}================================================{{bC`}{{j{{b{c}}}}}{}}000>>>>>>>>>>>>>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}000????????????{{bFf}{{j{{b{c}}}}}{}}000{b{{j{{b{c}}}}}{}}000000000002222{{{b{Ij}}}{{El{{b{Jh}}}}}}1111{bc{}}00{bJj}{bJl}{c{{Bj{e}}}{}{}}000{{}{{Bj{c}}}{}}000{bFj}0007777{b{{b{c}}}{}}000{{{b{n}}}{{b{nc}}}{}}000>>>>{{bFl}{{j{{b{c}}}}}{}}000::::::::::::``{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}<<<<43<<<<<<<<<<<<{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}>{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Nn}}{b{nCb}}}Cd}{{{b{Af}}MhMd}{{Bj{O`Ib}}}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{Af}}{b{Ah}}}Nn}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Af}}MhMhMd}{{Bj{O`Ib}}}}==2={c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{{}Ob}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Mh{El{Mh}}Md}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}1{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Mh}}}}={Blf}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Ob}}{b{nCb}}}Cd}{cc{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Od}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}0{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}2100==============={{bC`}{{j{{b{c}}}}}{}}>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0020{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}3{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MdMhMhMh}{{Fb{Od}}}}>{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999954999999999999{{{b{Of}}}Mh}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Of}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{Mh{b{Mb}}}Of}::::::::::::=::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Of}}}Oh}=={{{b{Of}}}{{El{Oh}}}}3{{{b{nOf}}{b{Mb}}}f}?{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Hf}}{b{nCb}}}Cd}{cc{}}{{{b{Hf}}}{{El{{b{c}}}}}Lh}<{{}Bl}{{{b{nHf}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{Hf}}}{{b{Bb}}}}{{{b{Hf}}}{{b{Ah}}}}{{Ah{B`{AlAn}}Bb}Hf}333333333333{{bC`}{{j{{b{c}}}}}{}}4444{{bC`C`C`}{{j{{b{c}}}}}{}}555{{{b{Hf}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}77{{{b{nHf}}}{{El{c}}}Lh}838{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj};{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}>{{bFl}{{j{{b{c}}}}}{}}>>>`````````````````{{bd}f}000000000```{{bh}{{j{{b{c}}}}}{}}00000000000{{bl}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000````000000000000000000000000666666666666555555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{n{Ol{Oj}}}}{b{Oj}}{b{{Ol{Oj}}}}}f}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}`````{{{b{nKl}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}444444444444{{{b{Oj}}}Oj}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{b{b{nc}}}f{}}000000000{bf}000000000{{{b{A@b}}{b{A@b}}}Ad}{{{b{A@d}}{b{A@d}}}Ad}{{{b{A@f}}{b{A@f}}}Ad}{{{b{A@h}}{b{A@h}}}Ad}{{{b{A@j}}{b{A@j}}}Ad}{{{b{A@l}}{b{A@l}}}Ad}{{{b{A@n}}{b{A@n}}}Ad}{{b{b{c}}}Ad{}}000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{}A@b}{{}AA`}{{}AAb}{{{b{nKl}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00000000000{Bl{{b{nc}}}{}}00000000000{c{{Bj{A@b}}}Bn}{c{{Bj{A@d}}}Bn}{c{{Bj{A@f}}}Bn}{c{{Bj{A@h}}}Bn}{c{{Bj{A@j}}}Bn}{c{{Bj{A@l}}}Bn}{c{{Bj{A@n}}}Bn}{c{{Bj{AA`}}}Bn}{c{{Bj{AAb}}}Bn}{b{{j{{b{c}}}}}{}}00000000000{Blf}00000000000{{{b{nKl}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}``{{{b{A@b}}{b{A@b}}}Bf}{{{b{A@d}}{b{A@d}}}Bf}{{{b{A@f}}{b{A@f}}}Bf}{{{b{A@h}}{b{A@h}}}Bf}{{{b{A@j}}{b{A@j}}}Bf}{{{b{A@l}}{b{A@l}}}Bf}{{{b{A@n}}{b{A@n}}}Bf}{{{b{AA`}}{b{AA`}}}Bf}{{{b{AAb}}{b{AAb}}}Bf}{{b{b{c}}}Bf{}}00000000000000000000000000000000000`{{bl}{{j{{b{c}}}}}{}}00000000000{{bC`}{{j{{b{c}}}}}{}}00000000000{{{b{{Ol{c}}}}{b{nCb}}}CdGf}{{{b{Oj}}{b{nCb}}}Cd}{{{b{A@b}}{b{nCb}}}Cd}{{{b{A@d}}{b{nCb}}}Cd}{{{b{A@f}}{b{nCb}}}Cd}{{{b{A@h}}{b{nCb}}}Cd}{{{b{A@j}}{b{nCb}}}Cd}{{{b{A@l}}{b{nCb}}}Cd}{{{b{A@n}}{b{nCb}}}Cd}{{{b{AA`}}{b{nCb}}}Cd}{{{b{AAb}}{b{nCb}}}Cd}{cc{}}00000000000{{{b{nKl}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nKl}}D`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}{b{nDl}}}{{On{A@d}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@d}}}}{{{b{nKl}}{b{nDl}}}{{On{A@f}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00000000000{{{b{A@b}}{b{nc}}}fEd}{{{b{A@d}}{b{nc}}}fEd}{{{b{A@f}}{b{nc}}}fEd}{{{b{A@h}}{b{nc}}}fEd}{{{b{A@j}}{b{nc}}}fEd}{{{b{A@l}}{b{nc}}}fEd}{{{b{A@n}}{b{nc}}}fEd}{{{b{AA`}}{b{nc}}}fEd}{{{b{AAb}}{b{nc}}}fEd}`{{}Bl}00000000000{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}12436502561304016453212650345124306305162440561236320541150634251634203654210{{}c{}}00000000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{{b{nKl}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nA@`}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}444444444444`444444444444444444444444````{{E`E`E`E`Bf}AA`}{{E`E`E`E`Bf}AAb}```666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666{{bC`}{{j{{b{c}}}}}{}}00000000000777777777777777777777777777777777777777777777777{{bC`C`C`}{{j{{b{c}}}}}{}}00000000000888888888888888888888888{{{b{A@b}}{b{A@b}}}{{El{Ad}}}}{{{b{A@d}}{b{A@d}}}{{El{Ad}}}}{{{b{A@f}}{b{A@f}}}{{El{Ad}}}}{{{b{A@h}}{b{A@h}}}{{El{Ad}}}}{{{b{A@j}}{b{A@j}}}{{El{Ad}}}}{{{b{A@l}}{b{A@l}}}{{El{Ad}}}}{{{b{A@n}}{b{A@n}}}{{El{Ad}}}}`????????????`{{bFf}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000{{{b{nKl}}D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{f}}}}222222222222``;;;;;;;;;;;;{{{b{nKl}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}`{{{b{A@b}}c}BjFh}{{{b{A@d}}c}BjFh}{{{b{A@f}}c}BjFh}{{{b{A@h}}c}BjFh}{{{b{A@j}}c}BjFh}{{{b{A@l}}c}BjFh}{{{b{A@n}}c}BjFh}{{{b{AA`}}c}BjFh}{{{b{AAb}}c}BjFh}{{{b{nKl}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}```{{{b{nKl}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}DjD`D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00000000000`{bc{}}000000000``{c{{Bj{e}}}{}{}}00000000000{{}{{Bj{c}}}{}}00000000000``{bFj}00000000000444444444444`{b{{b{c}}}{}}00000000000{{{b{n}}}{{b{nc}}}{}}00000000000``{{}c{}}00000000000{{bFl}{{j{{b{c}}}}}{}}00000000000888888888888888888888888````888888888888```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00{AAdA@b}<<<<<<<<<<<<777666<<<<<<<<<<<<<<<<<<<<<<<<<<<{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}>>>{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{b{b{nc}}}f{}}00{bf}00{b{{j{{b{c}}}}}{}}00000`{{{b{{Dd{D`}}}}}Jl}{{}AAf}{{}AAj}{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00666{Blf}00{{{b{n{b{nAAf}}}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{Hj}}}{{Eb{D`}}}}```{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{AAf}}{b{nCb}}}Cd}{{{b{AAh}}{b{nCb}}}Cd}{{{b{AAj}}{b{nCb}}}Cd}{cc{}}00{{{b{n{b{nAAf}}}}Dl{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@d}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}32416052341605{{}c{}}00999999{{{b{n{b{nAAf}}}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}``{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}};;;`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00========={{bFf}{{j{{b{c}}}}}{}}00>>>>>>{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{f}}}}???222{{{b{n{b{nAAf}}}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{n{b{nAAf}}}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}`{{{b{n{b{nAAf}}}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{A@bAAl}555{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00999999999`````{{bd}f}0`{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0`<<<<<<<<6655<<<<<<<<<<<<<<<<<<{{{b{Fd}}}{{AAn{{Gn{Aj}}}}}}=={{{b{Ld}}}Ld}{{{b{Jd}}}Jd}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}0`{{{b{Ah}}{b{Bb}}A`}Mj}11{c{{`{Gf}}}{{AB`{{b{nCb}}}{{Lj{Cd}}}}}}{{{b{{Dd{C`}}}}}Jl}{{}Ld}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ld}}}Bn}77{Blf}0`{{{b{Jd}}{b{Jd}}}Bf}{{b{b{c}}}Bf{}}000{cD`{{Cn{ABb}}}}{{{b{Hj}}}D`}0{{bl}{{j{{b{c}}}}}{}}0{{{b{Aj}}{b{Hj}}}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}Bl}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}{b{Hj}}}{{El{{b{Kh}}}}}}{{bC`}{{j{{b{c}}}}}{}}0{{{b{Ld}}{b{nCb}}}Cd}{{{b{Jd}}{b{nCb}}}Cd}0{cc{}}0{{{b{Kh}}Bf}{{ABf{Hj}}}}{DjABh}{b{{j{{b{c}}}}}{}}0{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}3012456{{}c{}}09999{{{b{ABh}}Bl}{{Bj{{F`{ABhBl}}Jd}}}}::::::``::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}0;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}0<<<<{{{b{ABh}}Bl}Bl}``=={{bFf}{{j{{b{c}}}}}{}}0>>>>{{{b{Mj}}}f}??33{{{b{Af}}{b{nAh}}}{{Bj{fIb}}}}{{{b{Ld}}c}BjFh}{b{{j{{b{c}}}}}{}}0{bc{}}0{bJj}{bJl}{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}066{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0{{}c{}}0{{bFl}{{j{{b{c}}}}}{}}0::::::{{}f}","D":"L@nKKj","p":[[1,"reference"],[5,"Private",4722],[1,"unit"],[6,"Attribute",4723],[5,"Painted",4724],[6,"Color",4725],[0,"mut"],[6,"OptLevel",0,4726],[6,"Value",0,4727],[6,"Ordering",4728],[5,"Context",4729],[5,"Module",4730],[5,"Program",4731],[6,"CoreType",4732],[6,"CoreLibfunc",4732],[5,"ProgramRegistry",4733],[5,"MetadataStorage",1602],[5,"Attribute",4734],[1,"bool"],[6,"Error",624],[6,"Result",4735],[1,"usize"],[10,"Deserializer",4736],[1,"u8"],[5,"Formatter",4737],[8,"Result",4737],[1,"i128"],[1,"i16"],[1,"i8"],[1,"array"],[10,"Into",4738],[5,"Felt",4739],[1,"i32"],[1,"slice"],[10,"Clone",4740],[1,"u16"],[1,"u32"],[1,"u64"],[1,"i64"],[1,"u128"],[5,"Vec",4741],[10,"Hasher",4742],[5,"Box",4743],[6,"RewriteResult",4744],[5,"VecDeque",4745],[6,"Option",4746],[5,"OrderedHashMap",4747],[1,"tuple"],[8,"Result",624],[5,"Path",4748],[6,"Quirk",4723],[10,"Serializer",4749],[5,"TypeId",4750],[5,"Condition",4751],[6,"ProgramCache",262],[10,"PartialEq",4728],[10,"Eq",4728],[10,"Hash",4742],[10,"Debug",4737],[5,"JitProgramCache",437],[5,"AotProgramCache",352],[5,"AotNativeExecutor",1329,4752],[5,"Arc",4753],[5,"NativeContext",523],[5,"JitNativeExecutor",1329,4754],[5,"MetadataComputationConfig",2232],[5,"NativeModule",2886],[6,"CoreConcreteLibfunc",4732],[1,"str"],[6,"SierraAssertError",624],[6,"CompilerError",624],[5,"LayoutError",4755],[6,"Error",4756],[5,"Error",4757],[6,"Error",4758],[5,"Error",4759],[6,"GasMetadataError",2232],[6,"EditStateError",4760],[5,"NativeAssertError",932],[5,"TryFromIntError",4761],[6,"ProgramRegistryError",4733],[5,"LayoutError",4509],[5,"ConcreteTypeId",4762],[10,"Error",4763],[5,"SmolStr",4764],[5,"String",4765],[10,"ToNativeAssertError",932],[5,"BuiltinStats",1020],[5,"ExecutionResult",1020],[5,"ContractExecutionResult",1020],[5,"AotContractExecutor",1329,4766],[5,"FunctionId",4762],[6,"c_void",4767],[10,"StarknetSyscallHandler",2975],[5,"Library",4768],[5,"GasMetadata",2232],[5,"ContractEntryPoints",4769],[5,"BuiltinCosts",4509],[10,"AsRef",4738],[10,"Any",4750],[17,"Output"],[10,"FnOnce",4770],[5,"AutoBreakpoint",1700],[6,"BreakpointEvent",1700],[5,"Block",4771],[5,"Location",4772],[5,"DebugUtils",1887],[5,"Value",4773],[5,"ExecutionEngine",4774],[5,"DropOverridesMeta",1982],[5,"DupOverridesMeta",2065],[5,"EnumSnapshotVariantsMeta",2148],[5,"GasCost",2232],[6,"ApChangeError",4775],[6,"CostError",4776],[5,"StatementIdx",4731],[6,"CostTokenType",4777],[5,"BTreeMap",4778],[5,"ReallocBindingsMeta",2614],[5,"Operation",4779],[5,"RuntimeBindingsMeta",2699],[5,"OperationRef",4779],[5,"TailRecursionMeta",2799],[5,"BlockRef",4771],[5,"Felt252Abi",2975],[5,"ArrayAbi",2975],[8,"SyscallResult",2975],[5,"DummySyscallHandler",2975],[5,"U256",2975],[5,"ExecutionInfo",2975],[5,"ExecutionInfoV2",2975],[5,"TxV2Info",2975],[5,"ResourceBounds",2975],[5,"BlockInfo",2975],[5,"TxInfo",2975],[5,"Secp256k1Point",2975],[5,"Secp256r1Point",2975],[5,"BigInt",4780],[5,"StubSyscallHandler",4209],[5,"StubEvent",4209],[5,"ContractLogs",4209],[5,"BigUint",4781],[8,"Result",4782],[10,"Fn",4770],[5,"BigInt",4783],[5,"GenFunction",4731],[6,"Cow",4784],[5,"Layout",4755],[15,"Struct",251],[15,"Enum",251],[15,"Felt252Dict",251],[15,"BoundedInt",251],[15,"IntRange",251],[15,"BoundedIntOutOfRange",929],[15,"Range",931],[15,"EnumInit",1885],[15,"NotEnoughGas",2613]],"r":[[14,4726],[28,4727],[76,4785],[164,4726],[167,4726],[263,352],[265,437],[1329,4766],[1330,4752],[1331,4754]],"b":[[113,"impl-From%3Cu8%3E-for-OptLevel"],[114,"impl-From%3Cusize%3E-for-OptLevel"],[116,"impl-From%3Ci128%3E-for-Value"],[118,"impl-From%3Ci16%3E-for-Value"],[119,"impl-From%3Ci8%3E-for-Value"],[120,"impl-From%3C%5BT;+N%5D%3E-for-Value"],[121,"impl-From%3CFelt%3E-for-Value"],[122,"impl-From%3Ci32%3E-for-Value"],[123,"impl-From%3C%26%5BT%5D%3E-for-Value"],[124,"impl-From%3Cu8%3E-for-Value"],[125,"impl-From%3Cu16%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu64%3E-for-Value"],[128,"impl-From%3Ci64%3E-for-Value"],[129,"impl-From%3Cu128%3E-for-Value"],[130,"impl-From%3CVec%3CT%3E%3E-for-Value"],[295,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[296,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[739,"impl-Display-for-Error"],[740,"impl-Debug-for-Error"],[741,"impl-Display-for-SierraAssertError"],[742,"impl-Debug-for-SierraAssertError"],[743,"impl-Debug-for-CompilerError"],[744,"impl-Display-for-CompilerError"],[745,"impl-From%3CLayoutError%3E-for-Error"],[746,"impl-From%3CError%3E-for-Error"],[747,"impl-From%3CError%3E-for-Error"],[748,"impl-From%3CError%3E-for-Error"],[749,"impl-From%3CError%3E-for-Error"],[750,"impl-From%3CGasMetadataError%3E-for-Error"],[751,"impl-From%3CEditStateError%3E-for-Error"],[753,"impl-From%3CCompilerError%3E-for-Error"],[754,"impl-From%3CNativeAssertError%3E-for-Error"],[755,"impl-From%3CSierraAssertError%3E-for-Error"],[756,"impl-From%3CTryFromIntError%3E-for-Error"],[757,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[758,"impl-From%3CLayoutError%3E-for-Error"],[960,"impl-Debug-for-NativeAssertError"],[961,"impl-Display-for-NativeAssertError"],[2376,"impl-Display-for-GasMetadataError"],[2377,"impl-Debug-for-GasMetadataError"],[2381,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[2382,"impl-From%3CCostError%3E-for-GasMetadataError"],[4596,"impl-Display-for-LayoutError"],[4597,"impl-Debug-for-LayoutError"]],"c":"OzAAAAEAAC8AFwBDAAEAHgEAAHMBAADIAQAAHgIAAMkCAgC4AwAAOgQCAGkFAgBWBgAAzQYBAHMHAADRBwAAJAgAAHcIAAAICQMASQoAAJ4KAAACCwAAWQsAAJcMCwCuEAIAyhEBAA==","e":"OzAAAAEAAI4GHwEBAAAAAwAKABAADAAeAAEALAADAEIAAABFAAcAUAAAAFMABgBdAAsAagAAAHAAAwB1AAAAdwAMAIYAEACkAAAA0QAAAN4AAADjAAcA7QADAPIAAQD8ABAAEwEBACEBAQAkAQAAJwECACwBBwA3AQAAVgECAFoBAgBhAQAAaAEBAHQBAAB3AQEAegEAAH0BAAB/AQAAgQEHAI8BAACrAQIArwECAL0BAQDJAQAAywEAAM0BAQDQAQAA0wEAANUBAADXAQcA5QEAAAECAgAFAgIAEwIBACECAAAjAgIAJwIFAC8CAAAyAgAANAIGAEECAABdAgIAYQICAGgCAABxAgcAegIQAIwCCQCoAgUA0gIFANsCAgDkAgwA8gIFAP0CFwAkAwAAdwMAAHsDDgCNAwgAogMCAK0DAQC7AwEAvgMAAMEDAQDFAwcA0wMAAO8DBQD2AwIA/QMAAAAEAgAJBAAAFgQFADcEAgA9BAwAUAQKAF4EFAB5BAIAgwQZAOsEAwD1BAEA/QQBAAIFAQAHBQMADgULAB0FCAAzBQAANQUAAEgFBQBsBQIAdQUFAH4FAwCFBQUAjgUCAJQFAACZBRcAtwUBALoFAAC8BQAAygUBAAwGAAAhBgkALgYIAEUGAABLBgEAWgYCAF4GAABhBgAAZAYAAGYGAABpBgAAawYAAG0GBgCaBgIAngYCAKUGBQC3BgMAzwYFANkGBADgBgYA6wYBAPEGEQAPBwAARgcHAFAHBQBeBwIAZwcCAHYHAAB4BwIAfAcAAIAHAACDBwcApgcGALAHAAC0BwIAuAcCAL8HAADGBwEA1AcCANgHAADbBwAA3gcHAAcIAgALCAIAEggAABkIAQAnCAIAKwgAAC4IAAAxCAcAWggCAF4IAgBlCAAAbAgBAHoIAgB+CAAAgggAAIQIBwCsCAAArggCALIIAgC5CAIAvwgEANwIBwAMCQgAHQkJACsJEgBGCQQATgkBAFEJAwBaCSIAiQkBAJcJAAAACgAABQoQABoKCwA2CgAAPgoBAEwKAQBPCgAAUgoAAFYKBwCBCgIAhQoCAJMKAQChCgIAqwoAAK4KAACwCgAAsgoHAMMKAADkCgIA6AoBAOsKAAD3CgEABgsBAAkLAAAMCwAADwsHADwLAgBACwIATgsBAFwLAQBfCwAAYgsAAGYLAABoCwYAdQsCAI0LAACVCwIAmQsCAKALAgCkCwEAqAsHALELDADuCwMACgwXAI8MBwCjDCsA2wwBAOkMJQAbDT0AcQ0KAIgNBwCcDWkAHg4BACwOAwA8DgAAVQ4IAE4PBwBiDwAAhw8BAJUPAQCjDygA2A8yABcQJgBiEAMAchAAAHUQAgB+EAAAixAFAKwQAQCxEAgAwBAKAM4QBwDcEAIA4hADAOkQFwAKEQMAEREAAGARAABnEQ4AeREMAIkRCACeEQIAohEDAKoRAACzEQMAzBEFANQRAADaEQUA4hEHAPQRAgD9EQ8AGhIBAEUSAQBPEgAAVBIBAFgSCQBkEgUAchIAAA=="}],["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","output_library","output_mlir","path","primary","","quirk","","rapid_blink","","red","","replace_ids","resetting","","rgb","","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_compile"],[190,"dyn_clone::sealed"],[191,"yansi::attr_quirk"],[192,"yansi::paint"],[193,"clap_builder::builder::command"],[194,"yansi::color"],[195,"core::fmt"],[196,"clap_builder::parser::matches::arg_matches"],[197,"clap_builder"],[198,"core::result"],[199,"clap_builder::util::id"],[200,"core::option"],[201,"cairo_lang_utils::ordered_hash_map"],[202,"cairo_lang_semantic::substitution"],[203,"alloc::vec"],[204,"alloc::collections::vec_deque"],[205,"alloc::boxed"],[206,"anyhow"],[207,"clap_builder::builder::possible_value"],[208,"core::any"],[209,"yansi::condition"]],"i":"Ab`0`0Al1000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`10101010101010101010101010101010101010101000001010101001010010111010101010100011010101010","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}4306215{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333````33{{bCf}{{j{{b{c}}}}}{}}04444`4411`44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????","D":"A@d","p":[[1,"reference"],[5,"Private",190],[1,"unit"],[6,"Attribute",191],[5,"Painted",192],[5,"Command",193],[6,"Color",194],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",195],[8,"Result",195],[5,"Args",0],[5,"ArgMatches",196],[8,"Error",197],[6,"Result",198],[5,"Id",199],[6,"Option",200],[5,"OrderedHashMap",201],[6,"RewriteResult",202],[5,"Vec",203],[5,"VecDeque",204],[5,"Box",205],[1,"tuple"],[8,"Result",206],[6,"Quirk",191],[5,"PossibleValue",207],[5,"TypeId",208],[1,"slice"],[5,"Condition",209]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADwADQAAAAEAAwACAAkAAQAVAAMALQAEADYAAwA8AAEAQgABAEYAAQBKABAAZQAAAKQABwCuAAgA"}],["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","input","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","load_program","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","parse_input","parse_output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","starknet","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_dump"],[192,"dyn_clone::sealed"],[193,"yansi::attr_quirk"],[194,"yansi::paint"],[195,"clap_builder::builder::command"],[196,"yansi::color"],[197,"core::fmt"],[198,"clap_builder::parser::matches::arg_matches"],[199,"clap_builder"],[200,"core::result"],[201,"clap_builder::util::id"],[202,"core::option"],[203,"cairo_lang_semantic::substitution"],[204,"alloc::vec"],[205,"alloc::collections::vec_deque"],[206,"cairo_lang_utils::ordered_hash_map"],[207,"alloc::boxed"],[208,"std::path"],[209,"cairo_lang_sierra::program"],[210,"core::error"],[211,"alloc::string"],[212,"core::any"],[213,"yansi::condition"]],"i":"``Ad0Ab1010001010101010101010101010101010101010101010001010101010101010101000100100000000111111101010101`01`0101010101010101010101010101010101010101010``01010101010100101010101010101000101010101","f":"````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}07777{Af{{b{c}}}{}}0{Af{{b{A`c}}}{}}099{Aff}0;;{{bAh}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Aj}}}Al}{{{b{Ad}}{b{A`Aj}}}Al}{cc{}}0{{{b{An}}}{{Bb{AbB`}}}}{{{b{A`An}}}{{Bb{AbB`}}}}{b{{j{{b{c}}}}}{}}0{{}{{Bf{Bd}}}}{{}Af}0`{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Bj{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bn{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{c}}}}}{{Bb{Bhe}}}{}{}}4635210{{}c{}}0::::::{{{b{Cd}}Cf}{{Bb{Ch{Cb{Cj}}}}}};;{{}{{Bb{f{Cb{Cj}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<{{bAh}{{j{{b{c}}}}}{}}0========{{bAhAhAh}{{j{{b{c}}}}}{}}0>>>>`{{{b{Cl}}}{{Bb{CnD`}}}}{{{b{Cl}}}{{Bb{AdD`}}}}{b{{j{{b{c}}}}}{}}0{{bDb}{{j{{b{c}}}}}{}}011111144`11{bc{}}0{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bDd}055{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Ab}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Ab}}{b{A`An}}}{{Bb{fB`}}}}{{}c{}}0{{bDf}{{j{{b{c}}}}}{}}0;;;;;;","D":"Of","p":[[1,"reference"],[5,"Private",192],[1,"unit"],[6,"Attribute",193],[5,"Painted",194],[5,"Command",195],[6,"Color",196],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[1,"u8"],[5,"Formatter",197],[8,"Result",197],[5,"ArgMatches",198],[8,"Error",199],[6,"Result",200],[5,"Id",201],[6,"Option",202],[6,"RewriteResult",203],[5,"Vec",204],[5,"VecDeque",205],[1,"tuple"],[5,"OrderedHashMap",206],[5,"Box",207],[5,"Path",208],[1,"bool"],[5,"Program",209],[10,"Error",210],[1,"str"],[5,"PathBuf",208],[5,"String",211],[6,"Quirk",193],[5,"TypeId",212],[5,"Condition",213]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAAEUADgAAAAYACQABABUAAwAtAAcAOQADAD8AAQBFAAEASQABAE0AEQBnAAAAagAAAJUAAgCnAAcAsQAHAA=="}],["cairo_native_run",{"t":"PFPGNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNCNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","available_gas","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","path","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","run_mode","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_run"],[190,"cairo_native_run::utils"],[369,"cairo_native_run::utils::test"],[624,"dyn_clone::sealed"],[625,"yansi::attr_quirk"],[626,"yansi::paint"],[627,"clap_builder::builder::command"],[628,"yansi::color"],[629,"core::fmt"],[630,"clap_builder::parser::matches::arg_matches"],[631,"clap_builder"],[632,"core::result"],[633,"clap_builder::util::id"],[634,"core::option"],[635,"alloc::vec"],[636,"cairo_lang_semantic::substitution"],[637,"alloc::collections::vec_deque"],[638,"alloc::boxed"],[639,"cairo_lang_utils::ordered_hash_map"],[640,"anyhow"],[641,"clap_builder::builder::possible_value"],[642,"core::any"],[643,"yansi::condition"],[644,"cairo_lang_sierra::program"],[645,"starknet_types_core::felt"],[646,"alloc::vec::into_iter"],[647,"alloc::string"],[648,"cairo_native::values"],[649,"cairo_native::execution_result"],[650,"cairo_lang_runner"],[651,"cairo_lang_test_plugin"],[652,"scarb_metadata"],[653,"cairo_lang_test_plugin::test_config"],[654,"cairo_lang_sierra::ids"],[655,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ab`0`0Al10000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`1010101010101010101010101010101010101010100010101010101000101110101010101000`11010101010D`0``0Ff1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fh0```EdFj2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0`{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}3460125{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333``33{{bCf}{{j{{b{c}}}}}{}}044444411``44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}`{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000998800000000000000000000{{{b{D`}}}D`}{{b{b{A`c}}}f{}}{bf}3333{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}055{Adf}077{{{b{Db}}{b{Dd}}}{{Cd{{b{Df}}}}}}{{bAf}{{j{{b{c}}}}}{}}0{{{b{D`}}{b{A`Ah}}}Aj}{{{Dj{Dh}}}Dl}{cc{}}0;;{{}Ad}0{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}5210346{{}c{}}0{b{{j{{b{c}}}}}{}}000{{{b{Dn}}}{{Bh{Dh}}}}111111111111111111111111111111>>11111111{{bAfAfAf}{{j{{b{c}}}}}{}}02222`22{{bCf}{{j{{b{c}}}}}{}}0333333{{{b{E`}}}{{Cd{Eb}}}}22`44`{bc{}}{{{b{D`}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Cl{D`}}}}}}=={{bCn}{{j{{b{c}}}}}{}}0======`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{b{c}}}{}}00{Ad{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{Ed}}Ad}f}{Adf}00``555{{EfEhEhDl}{{Cb{EfAd}}}}{{{b{Ej}}}{{Bh{{b{El}}}}}}{{bAf}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}36145024532106{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAfAfAf}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bCf}{{j{{b{c}}}}}{}}00111111111222{{{Bh{{Cb{DlEn}}}}Db{C`{F`{C`{FbFd}}}}Ff}{{Cd{Ed}}}}`222{c{{Bb{e}}}{}{}}00{{}{{Bb{c}}}{}}00{bCj}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bCn}{{j{{b{c}}}}}{}}00888888888","D":"CGn","p":[[1,"reference"],[5,"Private",624],[1,"unit"],[6,"Attribute",625],[5,"Painted",626],[5,"Command",627],[6,"Color",628],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",629],[8,"Result",629],[5,"Args",0],[5,"ArgMatches",630],[8,"Error",631],[6,"Result",632],[5,"Id",633],[6,"Option",634],[5,"Vec",635],[6,"RewriteResult",636],[5,"VecDeque",637],[5,"Box",638],[5,"OrderedHashMap",639],[1,"tuple"],[8,"Result",640],[6,"Quirk",625],[5,"PossibleValue",641],[5,"TypeId",642],[1,"slice"],[5,"Condition",643],[6,"RunMode",190],[5,"Program",644],[1,"str"],[8,"Function",644],[5,"Felt",645],[5,"IntoIter",646],[5,"String",647],[6,"Value",648],[5,"ExecutionResult",649],[6,"RunResultValue",650],[5,"TestsSummary",369],[5,"TestCompilation",651],[1,"bool"],[5,"PackageMetadata",652],[5,"TargetMetadata",652],[5,"TestConfig",653],[5,"FunctionId",654],[6,"CostTokenType",655],[1,"i32"],[5,"RunArgs",190],[6,"TestStatus",369],[5,"TestResult",369]],"r":[],"b":[],"c":"OzAAAAEAAAYAAwAsAAEA5gABAKoBAgA=","e":"OzAAAAEAALEAIAAAAAEAAwACAAkAAQAWAAMALgAEADcAAwA9AAEAQwABAEcAAQBLABAAZgAAAKMABwCtAAkAvwAEANAAAwDoAAIA7wADAPUAAQD8AAAAAgEPAEcBAABVAQAAWAEIAGMBBgByAQEAiQEFALMBBQC9AQQA0QEYADgCAABQAggAXAIIAA=="}],["cairo_native_runtime",{"t":"SSFFFFHHNNNNNNNNHHHHHHHHHHHHHHHHONNNHONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BYTES_IN_WORD","BYTE_ARRAY_MAGIC","DICT_GAS_REFUND_PER_ACCESS","FeltDict","FormattedItem","HALF_PRIME","as_cairo_short_string","as_cairo_short_string_ex","borrow","","","","borrow_mut","","","","cairo_native__dict_drop","cairo_native__dict_dup","cairo_native__dict_gas_refund","cairo_native__dict_get","cairo_native__dict_new","cairo_native__get_costs_builtin","cairo_native__libfunc__debug__print","cairo_native__libfunc__ec__ec_point_from_x_nz","cairo_native__libfunc__ec__ec_point_try_new_nz","cairo_native__libfunc__ec__ec_state_add","cairo_native__libfunc__ec__ec_state_add_mul","cairo_native__libfunc__ec__ec_state_init","cairo_native__libfunc__ec__ec_state_try_finalize_nz","cairo_native__libfunc__hades_permutation","cairo_native__libfunc__pedersen","cairo_native__set_costs_builtin","count","deref","","fmt","format_next_item","free_fn","from","","","","get","inner","into","","","","quote_if_string","try_from","","","","try_into","","","","type_id","","","","upcast","","","","upcast_mut","","","","vzip","","",""],"q":[[0,"cairo_native_runtime"],[73,"starknet_types_core::felt"],[74,"alloc::string"],[75,"core::option"],[76,"core::ffi"],[77,"core::fmt"],[78,"core::iter::traits::iterator"],[79,"core::clone"],[80,"core::result"],[81,"core::any"]],"i":"````````BlBdBfn3210````````````````0210`032103032103321032103210321032103210","f":"``````{{{d{b}}}{{h{f}}}}{{{d{b}}j}{{h{f}}}}{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}000{{n{h{{Af{A`}{{Ab{Ad}}}}}}}Ad}{{n{Af{A`}{{Ab{A`}}}}}n}{nAh}{{{d{ln}}{d{{Al{Aj}}}}}A`}{{{Af{A`}{{Ab{Ad}}}}}n}{{}Ah}{{AnAlB`}An}{{{d{l{Al{{Al{Aj}}}}}}}Bb}0{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{Aj}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Bb}{{{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}}Ad}{{{d{l{Al{Aj}}}}{d{{Al{Aj}}}}{d{{Al{Aj}}}}}Ad}{AhAh}`{{{d{Bd}}}{{d{b}}}}{{{d{Bf}}}{{d{Ah}}}}{{{d{n}}{d{lBh}}}Bj}{{{d{lc}}}{{h{Bl}}}{{C`{}{{Bn{b}}}}Cb}}`{cc{}}000{Blf}`{{}c{}}0001{c{{Cd{e}}}{}{}}000{{}{{Cd{c}}}{}}000{dCf}000{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}0005555","D":"Cn","p":[[5,"Felt",73],[1,"reference"],[5,"String",74],[6,"Option",75],[1,"usize"],[0,"mut"],[5,"FeltDict",0],[6,"c_void",76],[17,"Output"],[1,"unit"],[1,"fn"],[1,"u64"],[1,"u8"],[1,"array"],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[5,"Formatter",77],[8,"Result",77],[5,"FormattedItem",0],[17,"Item"],[10,"Iterator",78],[10,"Clone",79],[6,"Result",80],[5,"TypeId",81]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACoABwAAAAMABgAAAAkABwAhAAMAJgAAACwAAAAyABcA"}],["cairo_native_stress",{"t":"SJFFSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNHHNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","command","command_for_update","compile_and_insert","conceal","","context","cyan","","deref","","deref_mut","","dim","","directory_get_size","directory_is_empty","drop","","fg","","fixed","","fmt","from","","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","modify_starknet_contract","new","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","rounds","set_global_subscriber","strike","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_stress"],[188,"yansi::attr_quirk"],[189,"yansi::paint"],[190,"clap_builder::builder::command"],[191,"yansi::color"],[192,"cairo_lang_sierra::program"],[193,"cairo_native::ffi"],[194,"cairo_native::executor::aot"],[195,"alloc::sync"],[196,"core::cmp"],[197,"core::hash"],[198,"core::fmt"],[199,"std::io::error"],[200,"std::path"],[201,"core::convert"],[202,"clap_builder::parser::matches::arg_matches"],[203,"clap_builder"],[204,"core::result"],[205,"cairo_lang_sierra::ids"],[206,"core::option"],[207,"clap_builder::util::id"],[208,"alloc::boxed"],[209,"cairo_lang_semantic::substitution"],[210,"alloc::vec"],[211,"alloc::collections::vec_deque"],[212,"cairo_lang_utils::ordered_hash_map"],[213,"cairo_native::context"],[214,"core::any"],[215,"yansi::condition"]],"i":"`````nC`001010101010101010101010101010101011000110110101010``10101001000`110010111111100000001010101010`10`1101010101010101010101010101010101010101001010101010100`10101010101010001010101010","f":"`````{{bd}{{f{{b{c}}}}}{}}0{hh}0{{bj}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0222222222222222222`22{{}h}0{{{b{l{n{c}}}}c{b{A`}}Ab}{{Af{Ad}}}{AhAjAlAn}}44`44{B`{{b{c}}}{}}0{B`{{b{lc}}}{}}066{c{{Bd{Bb}}}{{Bh{Bf}}}}{c{{Bd{Bj}}}{{Bh{Bf}}}}{B`Bl}0::{{bBn}{{f{{b{c}}}}}{}}0{{{b{C`}}{b{lCb}}}Cd}{cc{}}0{{{b{Cf}}}{{Cj{C`Ch}}}}{{{b{lCf}}}{{Cj{C`Ch}}}}{Cl{{D`{CnA`}}}}{{{b{{n{c}}}}{b{c}}}{{Db{{Af{Ad}}}}}{AhAjAlAn}}{b{{f{{b{c}}}}}{}}0{{}{{Db{Dd}}}}{{}B`}0{{{b{l}}{b{l{Df{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Cj{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{D`{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Dj{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dl{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dn{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Db{c}}}}}{{Cj{Dhe}}}{}{}}1034265{{}c{}}0::::::::{{}Bl};;{{A`ClCl}A`}{{{b{E`}}}{{n{c}}}{AhAjAlAn}}========================{{bBn}{{f{{b{c}}}}}{}}0>>>>>>>>{{bBnBnBn}{{f{{b{c}}}}}{}}0????`??{{bEb}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000022`{{{b{C`}}}Bl}11{c{{Cj{e}}}{}{}}0{{}{{Cj{c}}}{}}0{bEd}044{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{{b{lC`}}{b{Cf}}}{{Cj{BlCh}}}}{{{b{lC`}}{b{lCf}}}{{Cj{BlCh}}}}??{{bEf}{{f{{b{c}}}}}{}}0999999","D":"A@j","p":[[1,"reference"],[6,"Attribute",188],[5,"Painted",189],[5,"Command",190],[6,"Color",191],[0,"mut"],[5,"NaiveAotCache",0],[5,"Program",192],[6,"OptLevel",193],[5,"AotNativeExecutor",194],[5,"Arc",195],[10,"PartialEq",196],[10,"Eq",196],[10,"Hash",197],[10,"Display",198],[1,"usize"],[1,"u64"],[8,"Result",199],[5,"Path",200],[10,"AsRef",201],[1,"bool"],[1,"unit"],[1,"u8"],[5,"StressTestCommand",0],[5,"Formatter",198],[8,"Result",198],[5,"ArgMatches",202],[8,"Error",203],[6,"Result",204],[1,"u32"],[5,"FunctionId",205],[1,"tuple"],[6,"Option",206],[5,"Id",207],[5,"Box",208],[6,"RewriteResult",209],[5,"Vec",210],[5,"VecDeque",211],[5,"OrderedHashMap",212],[5,"NativeContext",213],[6,"Quirk",188],[5,"TypeId",214],[5,"Condition",215]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADcAEQACAAAACAABABQAAwAqAAAALQABADIAAAA1AAMAPAACAEMAAABGAAEASQAAAEwAEABnAAAAawAAAKIAAAClAAUArQAHAA=="}],["cairo_native_test",{"t":"FONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNOONNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOONNNNNNOOONNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","attr","augment_args","augment_args_for_update","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","command","command_for_update","conceal","cyan","deref","deref_mut","dim","drop","fg","filter","fixed","fmt","from","from_arg_matches","from_arg_matches_mut","green","group_id","ignored","include_ignored","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","main","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","opt_level","path","primary","quirk","rapid_blink","red","resetting","rgb","run_mode","single_file","starknet","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","whenever","white","wrap","yellow","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_test"],[102,"cairo_native_test::utils"],[281,"cairo_native_test::utils::test"],[536,"yansi::attr_quirk"],[537,"yansi::paint"],[538,"clap_builder::builder::command"],[539,"yansi::color"],[540,"core::fmt"],[541,"clap_builder::parser::matches::arg_matches"],[542,"clap_builder"],[543,"core::result"],[544,"clap_builder::util::id"],[545,"core::option"],[546,"alloc::boxed"],[547,"cairo_lang_semantic::substitution"],[548,"cairo_lang_utils::ordered_hash_map"],[549,"alloc::collections::vec_deque"],[550,"alloc::vec"],[551,"anyhow"],[552,"core::any"],[553,"yansi::condition"],[554,"dyn_clone::sealed"],[555,"cairo_lang_sierra::program"],[556,"starknet_types_core::felt"],[557,"alloc::vec::into_iter"],[558,"alloc::string"],[559,"cairo_native::values"],[560,"cairo_native::execution_result"],[561,"cairo_lang_runner"],[562,"clap_builder::builder::possible_value"],[563,"cairo_lang_test_plugin"],[564,"scarb_metadata"],[565,"cairo_lang_test_plugin::test_config"],[566,"cairo_lang_sierra::ids"],[567,"cairo_lang_sierra::extensions::modules::gas"]],"i":"`Ad0000000000000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`00000Cj0``0Fd1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Ff0```EbFh2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``{{bd}{{f{{b{c}}}}}{}}{hh}0{{bj}{{f{{b{c}}}}}{}}{b{{f{{b{c}}}}}{}}000{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}2222222222{{}h}033{n{{b{c}}}{}}{n{{b{lc}}}{}}5{nA`}7`{{bAb}{{f{{b{c}}}}}{}}{{{b{Ad}}{b{lAf}}}Ah}{cc{}}{{{b{Aj}}}{{An{AdAl}}}}{{{b{lAj}}}{{An{AdAl}}}};{{}{{Bb{B`}}}}``{{}n}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{}c{}}{b{{f{{b{c}}}}}{}}000{{}{{C`{A`}}}}1111111111111{{bAb}{{f{{b{c}}}}}{}}2222{{bAbAbAb}{{f{{b{c}}}}}{}}33``3{{bCb}{{f{{b{c}}}}}{}}4441```4{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bCd}7{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}{{{b{lAd}}{b{Aj}}}{{An{A`Al}}}}{{{b{lAd}}{b{lAj}}}{{An{A`Al}}}}`<{{bCf}{{f{{b{c}}}}}{}}<<<````{{bCh}A`}{{bd}{{f{{b{c}}}}}{}}0{{bj}{{f{{b{c}}}}}{}}0????????7766????????????????????{{{b{Cj}}}Cj}{{b{b{lc}}}A`{}}{bA`}{b{{f{{b{c}}}}}{}}000{n{{b{c}}}{}}0{n{{b{lc}}}{}}022{nA`}077{{{b{Cl}}{b{Cn}}}{{C`{{b{D`}}}}}}{{bAb}{{f{{b{c}}}}}{}}0{{{b{Cj}}{b{lAf}}}Ah}{{{Dd{Db}}}Df}{cc{}}088{{}n}0{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}2631054{{}c{}}0{b{{f{{b{c}}}}}{}}000{{{b{Dh}}}{{Bn{Db}}}}111111111111111111111111111111>>11111111{{bAbAbAb}{{f{{b{c}}}}}{}}02222`22{{bCb}{{f{{b{c}}}}}{}}0333333{{{b{Dj}}}{{C`{Dl}}}}22`44`{bc{}}{{{b{Cj}}}{{Bb{Dn}}}}{c{{An{e}}}{}{}}0{{}{{An{c}}}{}}0{bCd}099{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{}{{b{{E`{Cj}}}}}}=={{bCf}{{f{{b{c}}}}}{}}0======`````{{bd}{{f{{b{c}}}}}{}}00{{bj}{{f{{b{c}}}}}{}}00????????????555444????????????????????????????????????{n{{b{c}}}{}}00{n{{b{lc}}}{}}00{b{{f{{b{c}}}}}{}}00{{{b{Eb}}n}A`}{nA`}00``555{{EdEfEfDf}{{Bh{Edn}}}}{{{b{Eh}}}{{Bn{{b{Ej}}}}}}{{bAb}{{f{{b{c}}}}}{}}00{cc{}}00`666`{{}n}00{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}41620356203514{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAbAbAb}{{f{{b{c}}}}}{}}00{b{{f{{b{c}}}}}{}}00000`000{{bCb}{{f{{b{c}}}}}{}}00111111111222{{{Bn{{Bh{DfEl}}}}Cl{Bj{En{Bj{F`Fb}}}}Fd}{{C`{Eb}}}}`222{c{{An{e}}}{}{}}00{{}{{An{c}}}{}}00{bCd}00555{b{{b{c}}}{}}00{{{b{l}}}{{b{lc}}}{}}00999{{bCf}{{f{{b{c}}}}}{}}00888888888","D":"C@j","p":[[1,"reference"],[6,"Attribute",536],[5,"Painted",537],[5,"Command",538],[6,"Color",539],[0,"mut"],[1,"usize"],[1,"unit"],[1,"u8"],[5,"Args",0],[5,"Formatter",540],[8,"Result",540],[5,"ArgMatches",541],[8,"Error",542],[6,"Result",543],[5,"Id",544],[6,"Option",545],[5,"Box",546],[6,"RewriteResult",547],[1,"tuple"],[5,"OrderedHashMap",548],[5,"VecDeque",549],[5,"Vec",550],[8,"Result",551],[6,"Quirk",536],[5,"TypeId",552],[5,"Condition",553],[5,"Private",554],[6,"RunMode",102],[5,"Program",555],[1,"str"],[8,"Function",555],[5,"Felt",556],[5,"IntoIter",557],[5,"String",558],[6,"Value",559],[5,"ExecutionResult",560],[6,"RunResultValue",561],[5,"PossibleValue",562],[1,"slice"],[5,"TestsSummary",281],[5,"TestCompilation",563],[1,"bool"],[5,"PackageMetadata",564],[5,"TargetMetadata",564],[5,"TestConfig",565],[5,"FunctionId",566],[6,"CostTokenType",567],[1,"i32"],[5,"RunArgs",102],[6,"TestStatus",281],[5,"TestResult",281]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAUAEAAAABYAjgCPAFIBUwFUAQ==","e":"OzAAAAEAAJMAIAAAAAAABAABAAsAAQAXAAEAGwABAB4AAAAiAAAAJAABACcAAAAqAAcANwAAAFkAAgBdAAUAZwAEAHgAAwCQAAIAlwADAJ0AAQCkAAAAqgAPAO8AAAD9AAAAAAEIAAsBBgAaAQEAMQEFAFsBBQBlAQQAeQEYAOABAAD4AQgABAIIAA=="}],["scarb_native_dump",{"t":"HCPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[181,"scarb_native_dump::utils::test"],[436,"anyhow"],[437,"dyn_clone::sealed"],[438,"yansi::attr_quirk"],[439,"yansi::paint"],[440,"yansi::color"],[441,"cairo_lang_sierra::program"],[442,"core::fmt"],[443,"starknet_types_core::felt"],[444,"alloc::vec::into_iter"],[445,"alloc::string"],[446,"alloc::vec"],[447,"cairo_lang_semantic::substitution"],[448,"core::result"],[449,"core::option"],[450,"cairo_lang_utils::ordered_hash_map"],[451,"alloc::boxed"],[452,"alloc::collections::vec_deque"],[453,"cairo_native::values"],[454,"cairo_native::execution_result"],[455,"cairo_lang_runner"],[456,"clap_builder::builder::possible_value"],[457,"core::any"],[458,"yansi::condition"],[459,"cairo_lang_test_plugin"],[460,"scarb_metadata"],[461,"cairo_lang_test_plugin::test_config"],[462,"cairo_lang_sierra::ids"],[463,"cairo_lang_sierra::extensions::modules::gas"]],"i":"``Ab0``0Ej1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101El0```DhEn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"{{}{{d{b}}}}`````{{fh}b}{{fj}{{l{{f{c}}}}}{}}0{{fn}{{l{{f{c}}}}}{}}0{f{{l{{f{c}}}}}{}}0000000{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}022222222222222222222{{{f{Ab}}}Ab}{{f{f{A`c}}}b{}}{fb}5555{Ad{{f{c}}}{}}0{Ad{{f{A`c}}}{}}077{Adb}099{{{f{Af}}{f{Ah}}}{{d{{f{Aj}}}}}}{{fAl}{{l{{f{c}}}}}{}}0{{{f{Ab}}{f{A`An}}}B`}{{{Bd{Bb}}}Bf}{cc{}}0=={{}Ad}0{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}6510342{{}c{}}0{f{{l{{f{c}}}}}{}}000{{{f{Ch}}}{{Bh{Bb}}}}111111111111111111111111111111>>11111111{{fAlAlAl}{{l{{f{c}}}}}{}}02222`22{{fCj}{{l{{f{c}}}}}{}}0333333{{{f{Cl}}}{{d{Cn}}}}22`44`{fc{}}{{{f{Ab}}}{{Bn{D`}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{fDb}099{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}0{{}{{f{{Dd{Ab}}}}}}=={{fDf}{{l{{f{c}}}}}{}}0======`````{{fj}{{l{{f{c}}}}}{}}00{{fn}{{l{{f{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{f{c}}}{}}00{Ad{{f{A`c}}}{}}00{f{{l{{f{c}}}}}{}}00{{{f{Dh}}Ad}b}{Adb}00``555{{DjDlDlBf}{{C`{DjAd}}}}{{{f{Dn}}}{{Bh{{f{E`}}}}}}{{fAl}{{l{{f{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}63504210245631{{}c{}}00???????????????????????????????????????????????????:::????????????{{fAlAlAl}{{l{{f{c}}}}}{}}00{f{{l{{f{c}}}}}{}}00000`000{{fCj}{{l{{f{c}}}}}{}}00111111111222{{{Bh{{C`{BfEb}}}}Af{Cb{Ed{Cb{EfEh}}}}Ej}{{d{Dh}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{fDb}00555{f{{f{c}}}{}}00{{{f{A`}}}{{f{A`c}}}{}}00999{{fDf}{{l{{f{c}}}}}{}}00888888888","D":"BGn","p":[[1,"unit"],[8,"Result",436],[1,"reference"],[5,"Private",437],[6,"Attribute",438],[5,"Painted",439],[6,"Color",440],[0,"mut"],[6,"RunMode",2],[1,"usize"],[5,"Program",441],[1,"str"],[8,"Function",441],[1,"u8"],[5,"Formatter",442],[8,"Result",442],[5,"Felt",443],[5,"IntoIter",444],[5,"String",445],[5,"Vec",446],[6,"RewriteResult",447],[6,"Result",448],[6,"Option",449],[1,"tuple"],[5,"OrderedHashMap",450],[5,"Box",451],[5,"VecDeque",452],[6,"Value",453],[6,"Quirk",438],[5,"ExecutionResult",454],[6,"RunResultValue",455],[5,"PossibleValue",456],[5,"TypeId",457],[1,"slice"],[5,"Condition",458],[5,"TestsSummary",181],[5,"TestCompilation",459],[1,"bool"],[5,"PackageMetadata",460],[5,"TargetMetadata",460],[5,"TestConfig",461],[5,"FunctionId",462],[6,"CostTokenType",463],[1,"i32"],[5,"RunArgs",2],[6,"TestStatus",181],[5,"TestResult",181]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAQAEAAAACoAKwDuAO8A8AA=","e":"OzAAAAEAAHUAFAAAAAAAAgAFABQAAwAsAAIAMwADADkAAQBAAAAARgAPAIsAAACZAAAAnAAIAKcABgC2AAEAzQAFAPcABQABAQQAFQEYAHwBAACUAQgAoAEIAA=="}],["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNONNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOONNNONNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","","attr","","","augment_args","augment_args_for_update","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize_test_compilation","dim","","","drop","","","fg","","","filter","fixed","","","fmt","","from","","","from_arg_matches","from_arg_matches_mut","green","","","group_id","ignored","include_ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","main","mask","","","matches","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","opt_level","packages_filter","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_mode","seen","strike","","","test_kind","to_owned","","to_possible_value","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","","","whenever","","","white","","","wrap","","","yellow","","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_test"],[284,"scarb_native_test::utils"],[463,"scarb_native_test::utils::test"],[718,"dyn_clone::sealed"],[719,"yansi::attr_quirk"],[720,"yansi::paint"],[721,"clap_builder::builder::command"],[722,"yansi::color"],[723,"std::path"],[724,"alloc::string"],[725,"cairo_lang_test_plugin"],[726,"anyhow"],[727,"core::fmt"],[728,"clap_builder::parser::matches::arg_matches"],[729,"clap_builder"],[730,"core::result"],[731,"clap_builder::util::id"],[732,"core::option"],[733,"cairo_lang_semantic::substitution"],[734,"cairo_lang_utils::ordered_hash_map"],[735,"alloc::vec"],[736,"alloc::boxed"],[737,"alloc::collections::vec_deque"],[738,"clap_builder::builder::possible_value"],[739,"core::any"],[740,"yansi::condition"],[741,"cairo_lang_sierra::program"],[742,"starknet_types_core::felt"],[743,"alloc::vec::into_iter"],[744,"cairo_native::values"],[745,"cairo_native::execution_result"],[746,"cairo_lang_runner"],[747,"scarb_metadata"],[748,"cairo_lang_test_plugin::test_config"],[749,"cairo_lang_sierra::ids"],[750,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ad`0``0Ab101Af111201201201201201201201201201201201201201201201201201212121112012020120120`12012012011201212011120111120111111122222220000000120120120120120`12021201201201201201201201201201201201201201201201201201201201201112012012012012012010120112212012012012012012011`20120120120120120Dl0``0Fj1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fl0```ElFn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}00{ll}0{{bn}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000000{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00222222222222222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}0777777{{}Ad}{{}Af}{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{{{b{Aj}}Al}{{B`{An}}}}<<<{Ahf}00>>>`{{bBb}{{j{{b{c}}}}}{}}00{{{b{Ab}}{b{A`Bd}}}Bf}{{{b{Ad}}{b{A`Bd}}}Bf}{cc{}}00{{{b{Bh}}}{{Bl{AbBj}}}}{{{b{A`Bh}}}{{Bl{AbBj}}}}{b{{j{{b{c}}}}}{}}00{{}{{C`{Bn}}}}``{{}Ah}00{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}64105321623504{{}c{}}00::::::::::::{{}{{B`{f}}}};;;{{{b{Ad}}{b{Cn}}}D`}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{{bBb}{{j{{b{c}}}}}{}}00============{{bBbBbBb}{{j{{b{c}}}}}{}}00>>>>>>``>>>{{bDb}{{j{{b{c}}}}}{}}00?????????111``???`{bc{}}0{{{b{Ad}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{A`Ab}}{b{Bh}}}{{Bl{fBj}}}}{{{b{A`Ab}}{b{A`Bh}}}{{Bl{fBj}}}}`{{}{{b{{Dh{Ad}}}}}}{{{b{A`Af}}AlAl}D`}{{}c{}}00{{bDj}{{j{{b{c}}}}}{}}00888888888````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0;;;;;;;;::99;;;;;;;;;;;;;;;;;;;;{{{b{Dl}}}Dl}{{b{b{A`c}}}f{}}{bf}>>>>{Ah{{b{c}}}{}}0{Ah{{b{A`c}}}{}}0{b{{j{{b{c}}}}}{}}0{Ahf}077{{{b{Dn}}{b{Cn}}}{{B`{{b{E`}}}}}}{{bBb}{{j{{b{c}}}}}{}}0{{{b{Dl}}{b{A`Bd}}}Bf}{{{Ed{Eb}}}Al}{cc{}}066{{}Ah}0{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}3260145{{}c{}}0????{{{b{Ef}}}{{Cf{Eb}}}}{b{{j{{b{c}}}}}{}}00000000000000000000000000000>>00000000{{bBbBbBb}{{j{{b{c}}}}}{}}01111`11{{bDb}{{j{{b{c}}}}}{}}0222222{{{b{Eh}}}{{B`{Ej}}}}22`33`{bc{}}{{{b{Dl}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{bDf}088{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Dh{Dl}}}}}}=={{bDj}{{j{{b{c}}}}}{}}0<<<<<<`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00>>>>>>>>>>>>555444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{El}}Ah}f}{Ahf}00``555{{AnD`D`Al}{{Cl{AnAh}}}}{{{b{En}}}{{Cf{{b{F`}}}}}}{{bBb}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ah}00{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}63215044015632{{}c{}}00???????????????????????????????????????????????????:::????????????{{bBbBbBb}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bDb}{{j{{b{c}}}}}{}}00111111111222{{{Cf{{Cl{AlFb}}}}Dn{Cd{Fd{Cd{FfFh}}}}Fj}{{B`{El}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bDj}{{j{{b{c}}}}}{}}00888888888","D":"COj","p":[[1,"reference"],[5,"Private",718],[1,"unit"],[6,"Attribute",719],[5,"Painted",720],[5,"Command",721],[6,"Color",722],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",723],[5,"String",724],[5,"TestCompilation",725],[8,"Result",726],[1,"u8"],[5,"Formatter",727],[8,"Result",727],[5,"ArgMatches",728],[8,"Error",729],[6,"Result",730],[5,"Id",731],[6,"Option",732],[6,"RewriteResult",733],[5,"OrderedHashMap",734],[5,"Vec",735],[5,"Box",736],[5,"VecDeque",737],[1,"tuple"],[1,"str"],[1,"bool"],[6,"Quirk",719],[5,"PossibleValue",738],[5,"TypeId",739],[1,"slice"],[5,"Condition",740],[6,"RunMode",284],[5,"Program",741],[8,"Function",741],[5,"Felt",742],[5,"IntoIter",743],[6,"Value",744],[5,"ExecutionResult",745],[6,"RunResultValue",746],[5,"TestsSummary",463],[5,"PackageMetadata",747],[5,"TargetMetadata",747],[5,"TestConfig",748],[5,"FunctionId",749],[6,"CostTokenType",750],[1,"i32"],[5,"RunArgs",284],[6,"TestStatus",463],[5,"TestResult",463]],"r":[],"b":[],"c":"OzAAAAEAAAcAAwA+AAIARAEBAAgCAgA=","e":"OzAAAAEAANEAJQAAAAEAAwAFAAwAAQAdAAUAQQAHAE8ACABbAAIAZQABAGoAAQBvAAAAcgAXAJkAAACdAAAA2wAAAO8AAAD0AAsAAwEJAA4BAgAdAQQALgEDAEYBAgBNAQMAUwEBAFoBAABgAQ8ApQEAALMBAAC2AQgAwQEGANABAQDnAQUAEQIFABsCBAAvAhgAlgIAAK4CCAC6AggA"}]]'));
+var searchIndex = new Map(JSON.parse('[["cairo_native",{"t":"PPPPPPPPPPPPPPGPPPPPPPPPPPPPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNHNNCNNCNNNNNNNNCNNNNNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHQQHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCNNNNNNNNNNNNNNNNCNNNNNNNNNNOOOOOOOOOOOPEPEGCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHCCCCCCCCPPPPPGPPPGPPPPPPPPPPPPPPPPPPPPIPPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNFFFNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNOONNNOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNCNNNNNNNNNNNNNNNNNNNCNNNNNCCCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNCNNNNNNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNNNMNOOOMNMNNNNNNNNNNNNNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNFFFNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHNNNNNNNNNNNNNNNNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNFJFJSNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNOHNNHHNNNNNNNNNNONNNNNHHHNNHHHNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNNNNHNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNH","n":["Aggressive","Array","BoundedInt","Bytes31","Default","EcPoint","EcState","Enum","Felt252","Felt252Dict","IntRange","Less","None","Null","OptLevel","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","Value","__clone_box","","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","clone","","clone_into","","clone_to_uninit","","cmp","compare","compile","conceal","","context","cyan","","debug","default","deref","","deref_mut","","deserialize","dim","","docs","drop","","eq","","equivalent","","","","","","","","error","execution_result","executor","fg","","fixed","","fmt","","from","","","","","","","","","","","","","","","","","","green","","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","metadata","module","module_to_object","native_assert","native_panic","object_to_shared_lib","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","partial_cmp","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","serialize","starknet","starknet_stub","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","utils","vzip","","whenever","","white","","wrap","","yellow","","debug_name","","","fields","range","tag","value","","","x","y","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","","","green","init","internal_rewrite","","","","","","","into","invert","italic","jit","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AotProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","JitProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","context","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeContext","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile","conceal","context","cyan","default","deref","deref_mut","dim","drop","eq","equivalent","","","","fg","fixed","fmt","from","green","init","initialize_mlir","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","libfunc_to_name","section01","section02","section03","section04","section05","section06","section07","section08","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","IntegerConversion","IntegerLikeTypeExpected","IoError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","LibraryLoadError","LinkError","MissingBuiltinCostsSymbol","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","NativeAssert","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SelectorNotFound","SerdeJsonError","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","fg","","","fixed","","","fmt","","","","","","from","","","","","","","","","","","","","","","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","make_missing_parameter","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","panic","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","source","strike","","","to_smolstr","","","to_string","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","range","value","ranges","NativeAssertError","ToNativeAssertError","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","to_native_assert_error","to_smolstr","to_string","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","","","attr","","","bg","","","bitwise","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","builtin_stats","circuit_add","circuit_mul","clear","","","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize","","","dim","","","drop","","","ec_op","eq","","","equivalent","","","","","","","","","","","","error_msg","failure_flag","fg","","","fixed","","","fmt","","","from","","","from_execution_result","green","","","hash","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","partial_cmp","","pedersen","poseidon","primary","","","quirk","","","range_check","range_check_96","rapid_blink","","","red","","","remaining_gas","","resetting","","","return_value","return_values","rgb","","","segment_arena","serialize","","","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","AotContractExecutor","AotNativeExecutor","JitNativeExecutor","__clone_box","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","clone_into","clone_to_uninit","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","","fg","","","find_function_ptr","","","find_symbol_ptr","","","fixed","","","fmt","","","from","","","from_native_module","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","invoke_contract_dynamic","","invoke_dynamic","","invoke_dynamic_with_syscall_handler","","italic","","","linger","","","load","magenta","","","mask","","","module","new","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","program_registry","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run","save","strike","","","to_owned","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","MetadataStorage","attr","auto_breakpoint","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_utils","default","deref","deref_mut","dim","drop","drop_overrides","dup_overrides","enum_snapshot_variants","fg","fixed","fmt","from","gas","get","get_mut","get_or_insert_with","green","init","insert","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc_bindings","red","remove","resetting","rgb","runtime_bindings","strike","tail_recursion","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","","add_event","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","cyan","","default","deref","","deref_mut","","dim","","drop","","eq","equivalent","","","","fg","","fixed","","fmt","","from","","green","","has_event","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","maybe_breakpoint","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","type_id","variant_idx","DebugUtils","attr","bg","black","blink","blue","bold","borrow","borrow_mut","breakpoint_marker","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_breakpoint_trap","debug_print","default","deref","deref_mut","dim","drop","dump_mem","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","quirk","rapid_blink","red","register_impls","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DropOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DupOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","EnumSnapshotVariantsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","from","get_variants","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","set_mapping","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","","","ap_change_info","attr","","","","bg","","","","black","","","","blink","","","","blue","","","","bold","","","","borrow","","","","borrow_mut","","","","bright","","","","bright_black","","","","bright_blue","","","","bright_cyan","","","","bright_green","","","","bright_magenta","","","","bright_red","","","","bright_white","","","","bright_yellow","","","","clear","","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","","cyan","","","","default","","deref","","","","deref_mut","","","","dim","","","","drop","","","","eq","","","equivalent","","","","","","","","","","","","fg","","","","fixed","","","","fmt","","","","","from","","","","","","function_set_costs","gas_info","get_gas_cost_for_statement_and_cost_token_type","get_gas_costs_for_statement","get_initial_available_gas","green","","","","hash","init","","","","initial_required_gas","initial_required_gas_for_entry_points","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","invert","","","","italic","","","","linear_ap_change_solver","linear_gas_solver","linger","","","","magenta","","","","mask","","","","new","on_black","","","","on_blue","","","","on_bright","","","","on_bright_black","","","","on_bright_blue","","","","on_bright_cyan","","","","on_bright_green","","","","on_bright_magenta","","","","on_bright_red","","","","on_bright_white","","","","on_bright_yellow","","","","on_cyan","","","","on_fixed","","","","on_green","","","","on_magenta","","","","on_primary","","","","on_red","","","","on_rgb","","","","on_white","","","","on_yellow","","","","primary","","","","quirk","","","","rapid_blink","","","","red","","","","resetting","","","","rgb","","","","source","strike","","","","to_owned","","","to_smolstr","to_string","try_from","","","","try_into","","","","type_id","","","","underline","","","","upcast","","","","upcast_mut","","","","vzip","","","","whenever","","","","white","","","","wrap","","","","yellow","","","","gas","ReallocBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","free","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","RuntimeBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dict_drop","dict_dup","dict_gas_refund","dict_get","dict_insert","dict_new","dim","drop","fg","fixed","fmt","from","get_gas_builtin","green","init","internal_rewrite","","","","","","","into","invert","italic","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_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vtable_cheatcode","vzip","whenever","white","wrap","yellow","TailRecursionMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","depth_counter","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","recursion_target","red","resetting","return_target","rgb","set_return_target","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeModule","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get_metadata","green","init","insert_metadata","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","metadata","module","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","program_registry","quirk","rapid_blink","red","remove_metadata","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","","","","","","","","","","account_contract_address","","account_deployment_data","attr","","","","","","","","","","","","bg","","","","","","","","","","","","black","","","","","","","","","","","","blink","","","","","","","","","","","","block_info","","block_number","block_timestamp","blue","","","","","","","","","","","","bold","","","","","","","","","","","","borrow","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","bright","","","","","","","","","","","","bright_black","","","","","","","","","","","","bright_blue","","","","","","","","","","","","bright_cyan","","","","","","","","","","","","bright_green","","","","","","","","","","","","bright_magenta","","","","","","","","","","","","bright_red","","","","","","","","","","","","bright_white","","","","","","","","","","","","bright_yellow","","","","","","","","","","","","cairo_native__vtable_cheatcode","call_contract","","caller_address","","capacity","chain_id","","cheatcode","clear","","","","","","","","","","","","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","","","","","","","compare","","","","","","","conceal","","","","","","","","","","","","contract_address","","cyan","","","","","","","","","","","","default","","","deploy","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","dim","","","","","","","","","","","","drop","","","","","","","","","","","","emit_event","","entry_point_selector","","eq","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fee_data_availability_mode","fg","","","","","","","","","","","","fixed","","","","","","","","","","","","fmt","","","","","","","","","","","from","","","","","","","","","","","","get_block_hash","","get_class_hash_at","","get_execution_info","","get_execution_info_v2","","green","","","","","","","","","","","","hash","","","","","","","","","hi","init","","","","","","","","","","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","invert","","","","","","","","","","","","is_infinity","","italic","","","","","","","","","","","","keccak","","library_call","","linger","","","","","","","","","","","","lo","magenta","","","","","","","","","","","","mask","","","","","","","","","","","","max_amount","max_fee","","max_price_per_unit","new","","nonce","","nonce_data_availability_mode","on_black","","","","","","","","","","","","on_blue","","","","","","","","","","","","on_bright","","","","","","","","","","","","on_bright_black","","","","","","","","","","","","on_bright_blue","","","","","","","","","","","","on_bright_cyan","","","","","","","","","","","","on_bright_green","","","","","","","","","","","","on_bright_magenta","","","","","","","","","","","","on_bright_red","","","","","","","","","","","","on_bright_white","","","","","","","","","","","","on_bright_yellow","","","","","","","","","","","","on_cyan","","","","","","","","","","","","on_fixed","","","","","","","","","","","","on_green","","","","","","","","","","","","on_magenta","","","","","","","","","","","","on_primary","","","","","","","","","","","","on_red","","","","","","","","","","","","on_rgb","","","","","","","","","","","","on_white","","","","","","","","","","","","on_yellow","","","","","","","","","","","","partial_cmp","","","","","","","paymaster_data","primary","","","","","","","","","","","","ptr","quirk","","","","","","","","","","","","rapid_blink","","","","","","","","","","","","red","","","","","","","","","","","","replace_class","","resetting","","","","","","","","","","","","resource","resource_bounds","rgb","","","","","","","","","","","","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","","sequencer_address","serialize","","","","","","","","","sha256_process_block","","signature","","since","storage_read","","storage_write","","strike","","","","","","","","","","","","tip","to_owned","","","","","","","","","","transaction_hash","","try_from","","","","","","","","","","","","try_into","","","","","","","","","","","","tx_info","","type_id","","","","","","","","","","","","underline","","","","","","","","","","","","until","upcast","","","","","","","","","","","","upcast_mut","","","","","","","","","","","","version","","vzip","","","","","","","","","","","","whenever","","","","","","","","","","","","white","","","","","","","","","","","","wrap","","","","","","","","","","","","x","","y","","yellow","","","","","","","","","","","","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","","","attr","","","bg","","","big4int_to_u256","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","call_contract","cheatcode","clear","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","cyan","","","data","decode_felts_as_str","default","","deploy","deref","","","deref_mut","","","dim","","","drop","","","emit_event","encode_str_as_felts","events","","execution_info","fg","","","fixed","","","fmt","","","from","","","get_block_hash","get_class_hash_at","get_execution_info","get_execution_info_v2","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","keccak","keys","l2_to_l1_messages","library_call","linger","","","logs","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","quirk","","","rapid_blink","","","red","","","replace_class","resetting","","","rgb","","","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","sha256_process_block","storage","storage_read","storage_write","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","u256_to_biguint","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","BuiltinCosts","HALF_PRIME","LayoutError","PRIME","SHARED_LIBRARY_EXT","__clone_box","","add_mod","attr","","bg","","bitwise","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cairo_to_sierra","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","const","create_engine","cyan","","debug_with","decode_error_message","default","deref","","deref_mut","","deserialize","dim","","drop","","ecop","eq","equivalent","","","","felt252_bigint","felt252_short_str","felt252_str","fg","","find_entry_point","find_entry_point_by_idx","find_function_id","fixed","","fmt","","","from","","generate_function_name","get_integer_layout","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","layout_repeat","linger","","magenta","","mask","","mem_tracing","mul_mod","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","padding_needed_for","pedersen","poseidon","primary","","quirk","","rapid_blink","","red","","register_runtime_symbols","resetting","","rgb","","run_pass_manager","serialize","strike","","to_owned","","to_smolstr","to_string","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","report_stats"],"q":[[0,"cairo_native"],[251,"cairo_native::Value"],[262,"cairo_native::cache"],[352,"cairo_native::cache::aot"],[437,"cairo_native::cache::jit"],[523,"cairo_native::context"],[615,"cairo_native::debug"],[616,"cairo_native::docs"],[624,"cairo_native::error"],[929,"cairo_native::error::CompilerError"],[931,"cairo_native::error::SierraAssertError"],[932,"cairo_native::error::panic"],[1020,"cairo_native::execution_result"],[1329,"cairo_native::executor"],[1602,"cairo_native::metadata"],[1700,"cairo_native::metadata::auto_breakpoint"],[1885,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[1887,"cairo_native::metadata::debug_utils"],[1982,"cairo_native::metadata::drop_overrides"],[2065,"cairo_native::metadata::dup_overrides"],[2148,"cairo_native::metadata::enum_snapshot_variants"],[2232,"cairo_native::metadata::gas"],[2613,"cairo_native::metadata::gas::GasMetadataError"],[2614,"cairo_native::metadata::realloc_bindings"],[2699,"cairo_native::metadata::runtime_bindings"],[2799,"cairo_native::metadata::tail_recursion"],[2886,"cairo_native::module"],[2975,"cairo_native::starknet"],[4209,"cairo_native::starknet_stub"],[4509,"cairo_native::utils"],[4721,"cairo_native::utils::mem_tracing"],[4722,"dyn_clone::sealed"],[4723,"yansi::attr_quirk"],[4724,"yansi::paint"],[4725,"yansi::color"],[4726,"cairo_native::ffi"],[4727,"cairo_native::values"],[4728,"core::cmp"],[4729,"melior::context"],[4730,"melior::ir::module"],[4731,"cairo_lang_sierra::program"],[4732,"cairo_lang_sierra::extensions::core"],[4733,"cairo_lang_sierra::program_registry"],[4734,"melior::ir::attribute"],[4735,"core::result"],[4736,"serde::de"],[4737,"core::fmt"],[4738,"core::convert"],[4739,"starknet_types_core::felt"],[4740,"core::clone"],[4741,"alloc::vec"],[4742,"core::hash"],[4743,"alloc::boxed"],[4744,"cairo_lang_semantic::substitution"],[4745,"alloc::collections::vec_deque"],[4746,"core::option"],[4747,"cairo_lang_utils::ordered_hash_map"],[4748,"std::path"],[4749,"serde::ser"],[4750,"core::any"],[4751,"yansi::condition"],[4752,"cairo_native::executor::aot"],[4753,"alloc::sync"],[4754,"cairo_native::executor::jit"],[4755,"core::alloc::layout"],[4756,"melior::error"],[4757,"serde_json::error"],[4758,"libloading::error"],[4759,"std::io::error"],[4760,"cairo_lang_sierra::edit_state"],[4761,"core::num::error"],[4762,"cairo_lang_sierra::ids"],[4763,"core::error"],[4764,"smol_str"],[4765,"alloc::string"],[4766,"cairo_native::executor::contract"],[4767,"core::ffi"],[4768,"libloading::safe"],[4769,"cairo_lang_starknet_classes::contract_class"],[4770,"core::ops::function"],[4771,"melior::ir::block"],[4772,"melior::ir::location"],[4773,"melior::ir::value"],[4774,"melior::execution_engine"],[4775,"cairo_lang_sierra_ap_change"],[4776,"cairo_lang_sierra_gas"],[4777,"cairo_lang_sierra::extensions::modules::gas"],[4778,"alloc::collections::btree::map"],[4779,"melior::ir::operation"],[4780,"ark_ff::biginteger"],[4781,"num_bigint::biguint"],[4782,"anyhow"],[4783,"num_bigint::bigint"],[4784,"alloc::borrow"],[4785,"cairo_native::compiler"]],"i":"A`Ab001000000110`0000000000000`101010101010101010101010101010101010`1010101011`10`10`11010010`101011110000```1010101110000000000000001011011111110000000101010101010``````101010101010101010101010101010101010101011010101010100``1010101010101010`1010101010ABjABlABn2AC`2210ACb0Fn`0```000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`Gj00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Gh000000000000000000000000000000000000000000000000000000000000000000000000000000000000`H`0000000000000000000000000000000000000`0000000000000000000000000000000000000000000000000000`````````Hl0Hn1Bh`00Fb`13111111111111110113`111`1113213213213213213213213213213213213213213213213213213213213213213213213213213211332211111111111111321321321111111333333322222221321321321321321132132132132132132132132132132132132132132132132132132132132132`1321321321321321321132132132132132132132132132132132132132132ACd0ACf``In00000000000000000000000000000000000000000000000000000000000000000000000Jn1111111111111```K`KbKd210210221021021021021021021021021021021021021021021012221021021021020202102102021021021021021022102222111100000021021021021002102021022222221111111000000021021021021021021021021021021021021021021021021021021021021021021021021021021020222102102221021010210102102210210210210210210210210210210210210210210```KfHbGl210210210210210210210210210210210210210210210210210222210210210210210210221021021021021021021010210211111110000000222222210210210101010210221021021021021021021021021021021021021021021021021021021021021021021021021102102102102102221022102102102102102102102102102102102`Bb`0000000000000000000`00000```0000`0000000000000000000000000000000000000000000`0000`0`00000000000``M`0Ln010101010101010101010101010101010101010101010100101010101111110101010100110111111100000001010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010ACh0`Mf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ml000000000000000000000000000000000000000000000000000000000000000000000000000000000`Mn000000000000000000000000000000000000000000000000000000000000000000000000000000000`N`0000000000000000000000000000000000000000000000000000000000000000000000000000000000Ij0````0L`NbHd22103210321032103210321032103210321032103210321032103210321032103210321032102102102103210320210321032103210321322221111333321032103210332103330222221031210322222222211111110000000333333321032103210300210321032103221032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103321032103321032103210321032103210321032103210321032103ACj`Nn00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ob00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Of0000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Hf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```On```0`````````OjA@bA@dA@fA@hA@jA@lA@nAA`AAb525A@`Ol;:9876543210;:9876543210;:9876543210;:98765432985510;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:98765432`Kl2:9185021<;:9876543<;:9876543<;:9876543<;:9876543;:98765;:9876521<;:9876543:921<;:9876543;430221<;:987654321<;:9876543;:987654321<;:987654321<;:987654302:9;:9876543;;;;::::9999888877776666555544443333821<;:987654321<;:98765431<;:987654321<;:98765430202020221<;:9876543;:9876543;21<;:987654322222221111111<<<<<<<;;;;;;;:::::::999999988888887777777666666655555554444444333333321<;:987654321<;:98765434321<;:9876543020221<;:9876543;21<;:987654321<;:987654378574385821<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:9876543;:98765821<;:9876543121<;:987654321<;:987654321<;:98765430221<;:98765437821<;:987654302020202020202020202026;:987654302851020221<;:98765438<;:98765438521<;:987654321<;:9876543:921<;:987654321<;:9876543121<;:987654321<;:98765438521<;:987654321<;:987654321<;:987654321<;:9876543434321<;:9876543```AAfAAhAAj210210`210210210210210210210210210210210210210210210222102102102102102101`2022102102102102`2022102102102102222210210222222211111110000000210210210210221022102102102102102102102102102102102102102102102102102102102102102102102102102102210210222222222222222210210210210210`210210210210210210210210`````LdJd110101101010101010101010101010101010`10101010101`10``1101011010100000```10```1010010``101011111110000000101010`101010`11010101010101010101010101010101010101010`1110101010`1010`11010001010101010101010101010`","f":"`````````````````````````````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0222222222222222222`22{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{b{b{nc}}}f{}}0{bf}0{{{b{A`}}{b{A`}}}Ad}{{b{b{c}}}Ad{}}{{{b{Af}}{b{Ah}}{b{Aj}}{b{{B`{AlAn}}}}{b{nBb}}BdBf}{{Bj{fBh}}}}99`99`{{}A`}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ab}}}Bn}==`{Blf}0{{{b{A`}}{b{A`}}}Bf}{{{b{Ab}}{b{Ab}}}Bf}{{b{b{c}}}Bf{}}0000000```{{bl}{{j{{b{c}}}}}{}}0{{bC`}{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nCb}}}Cd}{{{b{Ab}}{b{nCb}}}Cd}{C`A`}{BlA`}{cc{}}{CfAb}1{ChAb}{CjAb}{{{Cl{c}}}Ab{{Cn{Ab}}}}{D`Ab}{DbAb}{{{b{{Dd{c}}}}}Ab{{Cn{Ab}}Df}}{C`Ab}{DhAb}{DjAb}{DlAb}{DnAb}{E`Ab}{{{Eb{c}}}Ab{{Cn{Ab}}}}{b{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}4312650{{}c{}}0::::::::::``{{{b{Ah}}A`}{{Fb{{Eb{C`}}}}}}``{{{b{{Dd{C`}}}}{b{Fd}}}{{Fb{f}}}}<<<<<<<<<<<<<<<<<<<<<<<<{{bC`}{{j{{b{c}}}}}{}}0========{{bC`C`C`}{{j{{b{c}}}}}{}}0>>>>{{{b{A`}}{b{A`}}}{{El{Ad}}}}??{{bFf}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000033{{{b{Ab}}c}BjFh}``11{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}055{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0`>>{{bFl}{{j{{b{c}}}}}{}}0888888`````````````````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{{Fn{c}}}}{b{nCb}}}Cd{G`GbGdGf}}{{{Gh{c}}}{{Fn{c}}}{G`GbGd}}{{{Gj{c}}}{{Fn{c}}}{G`GbGd}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99`999999999999999>9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{n{Gj{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Gl}}}}}{G`GbGd}}33{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gj{c}}}}{b{nCb}}}Cd{G`GbGd}}{cc{}}{{{b{{Gj{c}}}}{b{c}}}{{El{{Gn{Gl}}}}}{G`GbGd}}:{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{H`}}}{{Gj{c}}}{G`GbGd}}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}};;;;43;;;;;;;;;;{{{b{n{Gh{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Hb}}}}}{GbGdG`}}<{{{b{{Gh{c}}}}}{{b{H`}}}{GbGdG`}}={Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}?{Blf}5{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gh{c}}}}{b{nCb}}}Cd{GbGdG`}}{cc{}}{{{b{{Gh{c}}}}{b{c}}}{{El{{Gn{Hb}}}}}{GbGdG`}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{H`}}}{{Gh{c}}}{GbGdG`}}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<<<1<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{H`}}{b{Aj}}Bf{El{Hd}}}{{Bj{HfBh}}}}3{{{b{H`}}}{{b{Af}}}}4{{}H`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}{{{b{H`}}{b{H`}}}Bf}{{b{b{c}}}Bf{}}0008{{bC`}{{j{{b{c}}}}}{}}{{{b{H`}}{b{nCb}}}Cd}{cc{}}={{}Bl}{{}Af}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}H`}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999{{{b{Hh}}}{{b{Hj}}}}`````````````````````````````````````````````{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<555444<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00>>>{Blf}00333{{bC`}{{j{{b{c}}}}}{}}00{{{b{Bh}}{b{nCb}}}Cd}0{{{b{Hl}}{b{nCb}}}Cd}0{{{b{Hn}}{b{nCb}}}Cd}0{I`Bh}{IbBh}{IdBh}{IfBh}{IhBh}{IjBh}{IlBh}{cc{}}{HnBh}{InBh}{HlBh}{J`Bh}{{{Ef{Jb}}}Bh}{JdBh}66{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}65432103240156{{}c{}}00999999999999{{{b{Jf}}}Bh}:::::::::::::::::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}00;;;;;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}00<<<<<<`<<<{{bFf}{{j{{b{c}}}}}{}}00=========111{{{b{Bh}}}{{El{{b{Jh}}}}}}>>>{bJj}00{bJl}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00==={{bFl}{{j{{b{c}}}}}{}}00333333333`````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{In}}{b{nCb}}}Cd}0{cc{}};{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{JlIn}111111111111=1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{{Jn{b{Hj}}}{{Fb{c}}}{}}{bJj}{bJl}{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}9{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}<<<```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00`????????????555444???????????????????????????```???{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{b{b{nc}}}f{}}00{bf}00{{{b{K`}}{b{K`}}}Ad}{{{b{Kd}}{b{Kd}}}Ad}{{b{b{c}}}Ad{}}0{b{{j{{b{c}}}}}{}}00000{{}K`}{{}Kd}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00{c{{Bj{K`}}}Bn}{c{{Bj{Kb}}}Bn}{c{{Bj{Kd}}}Bn}777{Blf}00`{{{b{K`}}{b{K`}}}Bf}{{{b{Kb}}{b{Kb}}}Bf}{{{b{Kd}}{b{Kd}}}Bf}{{b{b{c}}}Bf{}}00000000000``{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nCb}}}Cd}{{{b{Kb}}{b{nCb}}}Cd}{{{b{Kd}}{b{nCb}}}Cd}{cc{}}00{Kb{{Bj{KdBh}}}}{b{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nc}}}fEd}{{{b{Kd}}{b{nc}}}fEd}{{}Bl}00{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}50124360634215{{}c{}}00;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00======{{{b{K`}}{b{K`}}}{{El{Ad}}}}{{{b{Kd}}{b{Kd}}}{{El{Ad}}}}``???{{bFf}{{j{{b{c}}}}}{}}00``{b{{j{{b{c}}}}}{}}00000``000``444`{{{b{K`}}c}BjFh}{{{b{Kb}}c}BjFh}{{{b{Kd}}c}BjFh}333{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00777{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00???{{bFl}{{j{{b{c}}}}}{}}00:::::::::```{{bd}f}{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00============555444=============================={{{b{Kf}}}Kf}{{b{b{nc}}}f{}}{bf}{b{{j{{b{c}}}}}{}}00000{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00222{Blf}00{{{b{nKf}}}f}888{{{b{Hb}}{b{Kh}}}Kj}{{{b{Gl}}{b{Kh}}}{{Bj{KjBh}}}}{{{b{Kf}}{b{Kh}}Bf}{{Fb{Kj}}}}{{{b{Hb}}{b{Hj}}}{{El{Kj}}}}{{{b{Gl}}{b{Hj}}}{{El{Kj}}}}{{{b{Kf}}{b{Hj}}}{{El{Kj}}}}{{bC`}{{j{{b{c}}}}}{}}00{{{b{Hb}}{b{nCb}}}Cd}{{{b{Gl}}{b{nCb}}}Cd}{{{b{Kf}}{b{nCb}}}Cd}{cc{}}00{{HfA`}{{Bj{HbBh}}}}{{HfA`}{{Bj{GlBh}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}32106450321564{{}c{}}00999{{{b{Hb}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}??????{{{b{Fd}}}{{Fb{Kf}}}}{b{{j{{b{c}}}}}{}}00000{{{b{Hb}}}{{b{Ah}}}}{{Kn{B`{AlAn}}L`}Gl}{{{b{Aj}}{b{Lb}}A`}{{Fb{Kf}}}}333333333333333333333333333333333333{{bC`}{{j{{b{c}}}}}{}}00444444444444{{bC`C`C`}{{j{{b{c}}}}}{}}00555555555{{{b{Hb}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}00777777777222{{{b{Kf}}D`{b{{Dd{D`}}}}Dl{El{Ld}}c}{{Fb{Kd}}}Kl}{{{b{nKf}}c}{{Fb{f}}}{{Lf{Fd}}}}999{bc{}}{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00==={b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000`{{bh}{{j{{b{c}}}}}{}}`{{bl}{{j{{b{c}}}}}{}}222265222222222222`{{}Bb}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}```4{{bC`}{{j{{b{c}}}}}{}}{{{b{Bb}}{b{nCb}}}Cd}{cc{}}`{{{b{Bb}}}{{El{{b{c}}}}}Lh}{{{b{nBb}}}{{El{{b{nc}}}}}Lh}{{{b{nBb}}e}{{b{nc}}}Lh{{Ll{}{{Lj{c}}}}}}<{{}Bl}{{{b{nBb}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}Bb}111111111111{{bC`}{{j{{b{c}}}}}{}}2222{{bC`C`C`}{{j{{b{c}}}}}{}}333{{bFf}{{j{{b{c}}}}}{}}4`4{{{b{nBb}}}{{El{c}}}Lh}52`5`{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}8{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}};{{bFl}{{j{{b{c}}}}}{}};;;```{{bd}f}0{{{b{nLn}}M`}f}{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0????????6655????????????????????{{{b{M`}}}M`}{{{b{Ln}}}Ln}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}000{{}Ln}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}033{Blf}0{{{b{M`}}{b{M`}}}Bf}{{b{b{c}}}Bf{}}000;;{{bC`}{{j{{b{c}}}}}{}}0{{{b{M`}}{b{nCb}}}Cd}{{{b{Ln}}{b{nCb}}}Cd}{cc{}}0::{{{b{Ln}}{b{M`}}}Bf}{{{b{M`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}4123056{{}c{}}0{b{{j{{b{c}}}}}{}}000000000{{{b{Ln}}{b{Mb}}Md{b{Bb}}{b{M`}}}{{Bj{fBh}}}}111111111111111111111111{{bC`}{{j{{b{c}}}}}{}}022222222{{bC`C`C`}{{j{{b{c}}}}}{}}0333333{{bFf}{{j{{b{c}}}}}{}}04444441144{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}088{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0;;{{bFl}{{j{{b{c}}}}}{}}0;;;;;;```{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}====43{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{f}}}}>>>>>>>>>>>>{{{b{Mf}}{b{Mb}}Md}{{Fb{f}}}}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}{b{Hj}}Md}{{Fb{f}}}}{{}Mf}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{b{{j{{b{c}}}}}{}}{Blf}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhBlMd}{{Fb{f}}}}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Mf}}{b{nCb}}}Cd}{cc{}}5{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}>>>>>>>>>>>>>>>>>;>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{f}}}}000000{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0{{{b{Mf}}{b{Mj}}}f}141{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}4{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999943999999999999{{}Ml}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Ml}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}222254222222222222{{}Mn}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Mn}}{b{nCb}}}Cd}{cc{}}9{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000000000000000<0000{{bC`C`C`}{{j{{b{c}}}}}{}}111{{bFf}{{j{{b{c}}}}}{}}22212{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}5{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}888`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{{}N`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}={Blf}4{{bC`}{{j{{b{c}}}}}{}}{cc{}}{{{b{N`}}{b{Jf}}}{{El{{b{{Eb{Jf}}}}}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1{{{b{nN`}}{b{Jf}}{b{{Dd{Jf}}}}}f}<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00```````{{bd}f}00`{{bh}{{j{{b{c}}}}}{}}000{{bl}{{j{{b{c}}}}}{}}0003333333333333333666655553333333333333333333333333333333333333333{{{b{L`}}}L`}{{{b{Nb}}}Nb}{{{b{Hd}}}Hd}{{b{b{nc}}}f{}}00{bf}0088888888{{}L`}{{}Hd}{Bl{{b{c}}}{}}000{Bl{{b{nc}}}{}}000<<<<{Blf}000{{{b{L`}}{b{L`}}}Bf}{{{b{Nb}}{b{Nb}}}Bf}{{{b{Ij}}{b{Ij}}}Bf}{{b{b{c}}}Bf{}}00000000000>>>>{{bC`}{{j{{b{c}}}}}{}}000{{{b{L`}}{b{nCb}}}Cd}{{{b{Nb}}{b{nCb}}}Cd}{{{b{Hd}}{b{nCb}}}Cd}{{{b{Ij}}{b{nCb}}}Cd}0{cc{}}00{NdIj}{NfIj}2``{{{b{L`}}NhNj}{{El{Dl}}}}{{{b{L`}}Nh}{{Eb{{F`{DlNj}}}}}}{{{b{L`}}{b{Kh}}{El{Dl}}}{{Bj{DlIj}}}}{b{{j{{b{c}}}}}{}}000{{{b{Nb}}{b{nc}}}fEd}{{}Bl}000{{{b{L`}}{b{Kh}}}{{El{Dl}}}}{{{b{L`}}}{{Fb{{Nl{Dl{Nl{DlDl}}}}}}}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}156042315602431436052{{}c{}}000<<<<<<<<``<<<<<<<<<<<<{{{b{Aj}}{El{Hd}}}{{Bj{L`Ij}}}}================================================{{bC`}{{j{{b{c}}}}}{}}000>>>>>>>>>>>>>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}000????????????{{bFf}{{j{{b{c}}}}}{}}000{b{{j{{b{c}}}}}{}}000000000002222{{{b{Ij}}}{{El{{b{Jh}}}}}}1111{bc{}}00{bJj}{bJl}{c{{Bj{e}}}{}{}}000{{}{{Bj{c}}}{}}000{bFj}0007777{b{{b{c}}}{}}000{{{b{n}}}{{b{nc}}}{}}000>>>>{{bFl}{{j{{b{c}}}}}{}}000::::::::::::``{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}<<<<43<<<<<<<<<<<<{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}>{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Nn}}{b{nCb}}}Cd}{{{b{Af}}MhMd}{{Bj{O`Ib}}}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{Af}}{b{Ah}}}Nn}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Af}}MhMhMd}{{Bj{O`Ib}}}}==2={c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{{}Ob}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Mh{El{Mh}}Md}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}1{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Mh}}}}={Blf}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Ob}}{b{nCb}}}Cd}{cc{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Od}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}0{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}2100==============={{bC`}{{j{{b{c}}}}}{}}>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0020{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}3{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MdMhMhMh}{{Fb{Od}}}}>{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999954999999999999{{{b{Of}}}Mh}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Of}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{Mh{b{Mb}}}Of}::::::::::::=::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Of}}}Oh}=={{{b{Of}}}{{El{Oh}}}}3{{{b{nOf}}{b{Mb}}}f}?{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Hf}}{b{nCb}}}Cd}{cc{}}{{{b{Hf}}}{{El{{b{c}}}}}Lh}<{{}Bl}{{{b{nHf}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{Hf}}}{{b{Bb}}}}{{{b{Hf}}}{{b{Ah}}}}{{Ah{B`{AlAn}}Bb}Hf}333333333333{{bC`}{{j{{b{c}}}}}{}}4444{{bC`C`C`}{{j{{b{c}}}}}{}}555{{{b{Hf}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}77{{{b{nHf}}}{{El{c}}}Lh}838{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj};{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}>{{bFl}{{j{{b{c}}}}}{}}>>>`````````````````{{bd}f}000000000```{{bh}{{j{{b{c}}}}}{}}00000000000{{bl}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000````000000000000000000000000666666666666555555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{n{Ol{Oj}}}}{b{Oj}}{b{{Ol{Oj}}}}}f}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}`````{{{b{nKl}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}444444444444{{{b{Oj}}}Oj}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{b{b{nc}}}f{}}000000000{bf}000000000{{{b{A@b}}{b{A@b}}}Ad}{{{b{A@d}}{b{A@d}}}Ad}{{{b{A@f}}{b{A@f}}}Ad}{{{b{A@h}}{b{A@h}}}Ad}{{{b{A@j}}{b{A@j}}}Ad}{{{b{A@l}}{b{A@l}}}Ad}{{{b{A@n}}{b{A@n}}}Ad}{{b{b{c}}}Ad{}}000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{}A@b}{{}AA`}{{}AAb}{{{b{nKl}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00000000000{Bl{{b{nc}}}{}}00000000000{c{{Bj{A@b}}}Bn}{c{{Bj{A@d}}}Bn}{c{{Bj{A@f}}}Bn}{c{{Bj{A@h}}}Bn}{c{{Bj{A@j}}}Bn}{c{{Bj{A@l}}}Bn}{c{{Bj{A@n}}}Bn}{c{{Bj{AA`}}}Bn}{c{{Bj{AAb}}}Bn}{b{{j{{b{c}}}}}{}}00000000000{Blf}00000000000{{{b{nKl}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}``{{{b{A@b}}{b{A@b}}}Bf}{{{b{A@d}}{b{A@d}}}Bf}{{{b{A@f}}{b{A@f}}}Bf}{{{b{A@h}}{b{A@h}}}Bf}{{{b{A@j}}{b{A@j}}}Bf}{{{b{A@l}}{b{A@l}}}Bf}{{{b{A@n}}{b{A@n}}}Bf}{{{b{AA`}}{b{AA`}}}Bf}{{{b{AAb}}{b{AAb}}}Bf}{{b{b{c}}}Bf{}}00000000000000000000000000000000000`{{bl}{{j{{b{c}}}}}{}}00000000000{{bC`}{{j{{b{c}}}}}{}}00000000000{{{b{{Ol{c}}}}{b{nCb}}}CdGf}{{{b{Oj}}{b{nCb}}}Cd}{{{b{A@b}}{b{nCb}}}Cd}{{{b{A@d}}{b{nCb}}}Cd}{{{b{A@f}}{b{nCb}}}Cd}{{{b{A@h}}{b{nCb}}}Cd}{{{b{A@j}}{b{nCb}}}Cd}{{{b{A@l}}{b{nCb}}}Cd}{{{b{A@n}}{b{nCb}}}Cd}{{{b{AA`}}{b{nCb}}}Cd}{{{b{AAb}}{b{nCb}}}Cd}{cc{}}00000000000{{{b{nKl}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nKl}}D`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}{b{nDl}}}{{On{A@d}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@d}}}}{{{b{nKl}}{b{nDl}}}{{On{A@f}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00000000000{{{b{A@b}}{b{nc}}}fEd}{{{b{A@d}}{b{nc}}}fEd}{{{b{A@f}}{b{nc}}}fEd}{{{b{A@h}}{b{nc}}}fEd}{{{b{A@j}}{b{nc}}}fEd}{{{b{A@l}}{b{nc}}}fEd}{{{b{A@n}}{b{nc}}}fEd}{{{b{AA`}}{b{nc}}}fEd}{{{b{AAb}}{b{nc}}}fEd}`{{}Bl}00000000000{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}12436502561304016453212650345124306305162440561236320541150634251634203654210{{}c{}}00000000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{{b{nKl}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nA@`}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}444444444444`444444444444444444444444````{{E`E`E`E`Bf}AA`}{{E`E`E`E`Bf}AAb}```666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666{{bC`}{{j{{b{c}}}}}{}}00000000000777777777777777777777777777777777777777777777777{{bC`C`C`}{{j{{b{c}}}}}{}}00000000000888888888888888888888888{{{b{A@b}}{b{A@b}}}{{El{Ad}}}}{{{b{A@d}}{b{A@d}}}{{El{Ad}}}}{{{b{A@f}}{b{A@f}}}{{El{Ad}}}}{{{b{A@h}}{b{A@h}}}{{El{Ad}}}}{{{b{A@j}}{b{A@j}}}{{El{Ad}}}}{{{b{A@l}}{b{A@l}}}{{El{Ad}}}}{{{b{A@n}}{b{A@n}}}{{El{Ad}}}}`????????????`{{bFf}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000{{{b{nKl}}D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{f}}}}222222222222``;;;;;;;;;;;;{{{b{nKl}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}`{{{b{A@b}}c}BjFh}{{{b{A@d}}c}BjFh}{{{b{A@f}}c}BjFh}{{{b{A@h}}c}BjFh}{{{b{A@j}}c}BjFh}{{{b{A@l}}c}BjFh}{{{b{A@n}}c}BjFh}{{{b{AA`}}c}BjFh}{{{b{AAb}}c}BjFh}{{{b{nKl}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}```{{{b{nKl}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}DjD`D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00000000000`{bc{}}000000000``{c{{Bj{e}}}{}{}}00000000000{{}{{Bj{c}}}{}}00000000000``{bFj}00000000000444444444444`{b{{b{c}}}{}}00000000000{{{b{n}}}{{b{nc}}}{}}00000000000``{{}c{}}00000000000{{bFl}{{j{{b{c}}}}}{}}00000000000888888888888888888888888````888888888888```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00{AAdA@b}<<<<<<<<<<<<777666<<<<<<<<<<<<<<<<<<<<<<<<<<<{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}>>>{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{b{b{nc}}}f{}}00{bf}00{b{{j{{b{c}}}}}{}}00000`{{{b{{Dd{D`}}}}}Jl}{{}AAf}{{}AAj}{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00666{Blf}00{{{b{n{b{nAAf}}}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{Hj}}}{{Eb{D`}}}}```{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{AAf}}{b{nCb}}}Cd}{{{b{AAh}}{b{nCb}}}Cd}{{{b{AAj}}{b{nCb}}}Cd}{cc{}}00{{{b{n{b{nAAf}}}}Dl{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@d}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}32416052341605{{}c{}}00999999{{{b{n{b{nAAf}}}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}``{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}};;;`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00========={{bFf}{{j{{b{c}}}}}{}}00>>>>>>{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{f}}}}???222{{{b{n{b{nAAf}}}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{n{b{nAAf}}}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}`{{{b{n{b{nAAf}}}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{A@bAAl}555{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00999999999`````{{bd}f}0`{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0`<<<<<<<<6655<<<<<<<<<<<<<<<<<<{{{b{Fd}}}{{AAn{{Gn{Aj}}}}}}=={{{b{Ld}}}Ld}{{{b{Jd}}}Jd}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}0`{{{b{Ah}}{b{Bb}}A`}Mj}11{c{{`{Gf}}}{{AB`{{b{nCb}}}{{Lj{Cd}}}}}}{{{b{{Dd{C`}}}}}Jl}{{}Ld}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ld}}}Bn}77{Blf}0`{{{b{Jd}}{b{Jd}}}Bf}{{b{b{c}}}Bf{}}000{cD`{{Cn{ABb}}}}{{{b{Hj}}}D`}0{{bl}{{j{{b{c}}}}}{}}0{{{b{Aj}}{b{Hj}}}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}Bl}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}{b{Hj}}}{{El{{b{Kh}}}}}}{{bC`}{{j{{b{c}}}}}{}}0{{{b{Ld}}{b{nCb}}}Cd}{{{b{Jd}}{b{nCb}}}Cd}0{cc{}}0{{{b{Kh}}Bf}{{ABf{Hj}}}}{DjABh}{b{{j{{b{c}}}}}{}}0{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}3012456{{}c{}}09999{{{b{ABh}}Bl}{{Bj{{F`{ABhBl}}Jd}}}}::::::``::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}0;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}0<<<<{{{b{ABh}}Bl}Bl}``=={{bFf}{{j{{b{c}}}}}{}}0>>>>{{{b{Mj}}}f}??33{{{b{Af}}{b{nAh}}}{{Bj{fIb}}}}{{{b{Ld}}c}BjFh}{b{{j{{b{c}}}}}{}}0{bc{}}0{bJj}{bJl}{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}066{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0{{}c{}}0{{bFl}{{j{{b{c}}}}}{}}0::::::{{}f}","D":"L@nKKj","p":[[1,"reference"],[5,"Private",4722],[1,"unit"],[6,"Attribute",4723],[5,"Painted",4724],[6,"Color",4725],[0,"mut"],[6,"OptLevel",0,4726],[6,"Value",0,4727],[6,"Ordering",4728],[5,"Context",4729],[5,"Module",4730],[5,"Program",4731],[6,"CoreType",4732],[6,"CoreLibfunc",4732],[5,"ProgramRegistry",4733],[5,"MetadataStorage",1602],[5,"Attribute",4734],[1,"bool"],[6,"Error",624],[6,"Result",4735],[1,"usize"],[10,"Deserializer",4736],[1,"u8"],[5,"Formatter",4737],[8,"Result",4737],[1,"i128"],[1,"i16"],[1,"i8"],[1,"array"],[10,"Into",4738],[5,"Felt",4739],[1,"i32"],[1,"slice"],[10,"Clone",4740],[1,"u16"],[1,"u32"],[1,"u64"],[1,"i64"],[1,"u128"],[5,"Vec",4741],[10,"Hasher",4742],[5,"Box",4743],[6,"RewriteResult",4744],[5,"VecDeque",4745],[6,"Option",4746],[5,"OrderedHashMap",4747],[1,"tuple"],[8,"Result",624],[5,"Path",4748],[6,"Quirk",4723],[10,"Serializer",4749],[5,"TypeId",4750],[5,"Condition",4751],[6,"ProgramCache",262],[10,"PartialEq",4728],[10,"Eq",4728],[10,"Hash",4742],[10,"Debug",4737],[5,"JitProgramCache",437],[5,"AotProgramCache",352],[5,"AotNativeExecutor",1329,4752],[5,"Arc",4753],[5,"NativeContext",523],[5,"JitNativeExecutor",1329,4754],[5,"MetadataComputationConfig",2232],[5,"NativeModule",2886],[6,"CoreConcreteLibfunc",4732],[1,"str"],[6,"SierraAssertError",624],[6,"CompilerError",624],[5,"LayoutError",4755],[6,"Error",4756],[5,"Error",4757],[6,"Error",4758],[5,"Error",4759],[6,"GasMetadataError",2232],[6,"EditStateError",4760],[5,"NativeAssertError",932],[5,"TryFromIntError",4761],[6,"ProgramRegistryError",4733],[5,"LayoutError",4509],[5,"ConcreteTypeId",4762],[10,"Error",4763],[5,"SmolStr",4764],[5,"String",4765],[10,"ToNativeAssertError",932],[5,"BuiltinStats",1020],[5,"ExecutionResult",1020],[5,"ContractExecutionResult",1020],[5,"AotContractExecutor",1329,4766],[5,"FunctionId",4762],[6,"c_void",4767],[10,"StarknetSyscallHandler",2975],[5,"Library",4768],[5,"GasMetadata",2232],[5,"ContractEntryPoints",4769],[5,"BuiltinCosts",4509],[10,"AsRef",4738],[10,"Any",4750],[17,"Output"],[10,"FnOnce",4770],[5,"AutoBreakpoint",1700],[6,"BreakpointEvent",1700],[5,"Block",4771],[5,"Location",4772],[5,"DebugUtils",1887],[5,"Value",4773],[5,"ExecutionEngine",4774],[5,"DropOverridesMeta",1982],[5,"DupOverridesMeta",2065],[5,"EnumSnapshotVariantsMeta",2148],[5,"GasCost",2232],[6,"ApChangeError",4775],[6,"CostError",4776],[5,"StatementIdx",4731],[6,"CostTokenType",4777],[5,"BTreeMap",4778],[5,"ReallocBindingsMeta",2614],[5,"Operation",4779],[5,"RuntimeBindingsMeta",2699],[5,"OperationRef",4779],[5,"TailRecursionMeta",2799],[5,"BlockRef",4771],[5,"Felt252Abi",2975],[5,"ArrayAbi",2975],[8,"SyscallResult",2975],[5,"DummySyscallHandler",2975],[5,"U256",2975],[5,"ExecutionInfo",2975],[5,"ExecutionInfoV2",2975],[5,"TxV2Info",2975],[5,"ResourceBounds",2975],[5,"BlockInfo",2975],[5,"TxInfo",2975],[5,"Secp256k1Point",2975],[5,"Secp256r1Point",2975],[5,"BigInt",4780],[5,"StubSyscallHandler",4209],[5,"StubEvent",4209],[5,"ContractLogs",4209],[5,"BigUint",4781],[8,"Result",4782],[10,"Fn",4770],[5,"BigInt",4783],[5,"GenFunction",4731],[6,"Cow",4784],[5,"Layout",4755],[15,"Struct",251],[15,"Enum",251],[15,"Felt252Dict",251],[15,"BoundedInt",251],[15,"IntRange",251],[15,"BoundedIntOutOfRange",929],[15,"Range",931],[15,"EnumInit",1885],[15,"NotEnoughGas",2613]],"r":[[14,4726],[28,4727],[76,4785],[164,4726],[167,4726],[263,352],[265,437],[1329,4766],[1330,4752],[1331,4754]],"b":[[113,"impl-From%3Cu8%3E-for-OptLevel"],[114,"impl-From%3Cusize%3E-for-OptLevel"],[116,"impl-From%3Ci128%3E-for-Value"],[118,"impl-From%3Ci16%3E-for-Value"],[119,"impl-From%3Ci8%3E-for-Value"],[120,"impl-From%3C%5BT;+N%5D%3E-for-Value"],[121,"impl-From%3CFelt%3E-for-Value"],[122,"impl-From%3Ci32%3E-for-Value"],[123,"impl-From%3C%26%5BT%5D%3E-for-Value"],[124,"impl-From%3Cu8%3E-for-Value"],[125,"impl-From%3Cu16%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu64%3E-for-Value"],[128,"impl-From%3Ci64%3E-for-Value"],[129,"impl-From%3Cu128%3E-for-Value"],[130,"impl-From%3CVec%3CT%3E%3E-for-Value"],[295,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[296,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[739,"impl-Display-for-Error"],[740,"impl-Debug-for-Error"],[741,"impl-Display-for-SierraAssertError"],[742,"impl-Debug-for-SierraAssertError"],[743,"impl-Debug-for-CompilerError"],[744,"impl-Display-for-CompilerError"],[745,"impl-From%3CLayoutError%3E-for-Error"],[746,"impl-From%3CError%3E-for-Error"],[747,"impl-From%3CError%3E-for-Error"],[748,"impl-From%3CError%3E-for-Error"],[749,"impl-From%3CError%3E-for-Error"],[750,"impl-From%3CGasMetadataError%3E-for-Error"],[751,"impl-From%3CEditStateError%3E-for-Error"],[753,"impl-From%3CCompilerError%3E-for-Error"],[754,"impl-From%3CNativeAssertError%3E-for-Error"],[755,"impl-From%3CSierraAssertError%3E-for-Error"],[756,"impl-From%3CTryFromIntError%3E-for-Error"],[757,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[758,"impl-From%3CLayoutError%3E-for-Error"],[960,"impl-Debug-for-NativeAssertError"],[961,"impl-Display-for-NativeAssertError"],[2376,"impl-Display-for-GasMetadataError"],[2377,"impl-Debug-for-GasMetadataError"],[2381,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[2382,"impl-From%3CCostError%3E-for-GasMetadataError"],[4596,"impl-Display-for-LayoutError"],[4597,"impl-Debug-for-LayoutError"]],"c":"OzAAAAEAAC8AFwBDAAEAHgEAAHMBAADIAQAAHgIAAMkCAgC4AwAAOgQCAGkFAgBWBgAAzQYBAHMHAADRBwAAJAgAAHcIAAAICQMASQoAAJ4KAAACCwAAWQsAAJcMCwCuEAIAyhEBAA==","e":"OzAAAAEAAI4GHwEBAAAAAwAKABAADAAeAAEALAADAEIAAABFAAcAUAAAAFMABgBdAAsAagAAAHAAAwB1AAAAdwAMAIYAEACkAAAA0QAAAN4AAADjAAcA7QADAPIAAQD8ABAAEwEBACEBAQAkAQAAJwECACwBBwA3AQAAVgECAFoBAgBhAQAAaAEBAHQBAAB3AQEAegEAAH0BAAB/AQAAgQEHAI8BAACrAQIArwECAL0BAQDJAQAAywEAAM0BAQDQAQAA0wEAANUBAADXAQcA5QEAAAECAgAFAgIAEwIBACECAAAjAgIAJwIFAC8CAAAyAgAANAIGAEECAABdAgIAYQICAGgCAABxAgcAegIQAIwCCQCoAgUA0gIFANsCAgDkAgwA8gIFAP0CFwAkAwAAdwMAAHsDDgCNAwgAogMCAK0DAQC7AwEAvgMAAMEDAQDFAwcA0wMAAO8DBQD2AwIA/QMAAAAEAgAJBAAAFgQFADcEAgA9BAwAUAQKAF4EFAB5BAIAgwQZAOsEAwD1BAEA/QQBAAIFAQAHBQMADgULAB0FCAAzBQAANQUAAEgFBQBsBQIAdQUFAH4FAwCFBQUAjgUCAJQFAACZBRcAtwUBALoFAAC8BQAAygUBAAwGAAAhBgkALgYIAEUGAABLBgEAWgYCAF4GAABhBgAAZAYAAGYGAABpBgAAawYAAG0GBgCaBgIAngYCAKUGBQC3BgMAzwYFANkGBADgBgYA6wYBAPEGEQAPBwAARgcHAFAHBQBeBwIAZwcCAHYHAAB4BwIAfAcAAIAHAACDBwcApgcGALAHAAC0BwIAuAcCAL8HAADGBwEA1AcCANgHAADbBwAA3gcHAAcIAgALCAIAEggAABkIAQAnCAIAKwgAAC4IAAAxCAcAWggCAF4IAgBlCAAAbAgBAHoIAgB+CAAAgggAAIQIBwCsCAAArggCALIIAgC5CAIAvwgEANwIBwAMCQgAHQkJACsJEgBGCQQATgkBAFEJAwBaCSIAiQkBAJcJAAAACgAABQoQABoKCwA2CgAAPgoBAEwKAQBPCgAAUgoAAFYKBwCBCgIAhQoCAJMKAQChCgIAqwoAAK4KAACwCgAAsgoHAMMKAADkCgIA6AoBAOsKAAD3CgEABgsBAAkLAAAMCwAADwsHADwLAgBACwIATgsBAFwLAQBfCwAAYgsAAGYLAABoCwYAdQsCAI0LAACVCwIAmQsCAKALAgCkCwEAqAsHALELDADuCwMACgwXAI8MBwCjDCsA2wwBAOkMJQAbDT0AcQ0KAIgNBwCcDWkAHg4BACwOAwA8DgAAVQ4IAE4PBwBiDwAAhw8BAJUPAQCjDygA2A8yABcQJgBiEAMAchAAAHUQAgB+EAAAixAFAKwQAQCxEAgAwBAKAM4QBwDcEAIA4hADAOkQFwAKEQMAEREAAGARAABnEQ4AeREMAIkRCACeEQIAohEDAKoRAACzEQMAzBEFANQRAADaEQUA4hEHAPQRAgD9EQ8AGhIBAEUSAQBPEgAAVBIBAFgSCQBkEgUAchIAAA=="}],["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","output_library","output_mlir","path","primary","","quirk","","rapid_blink","","red","","replace_ids","resetting","","rgb","","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_compile"],[190,"dyn_clone::sealed"],[191,"yansi::attr_quirk"],[192,"yansi::paint"],[193,"clap_builder::builder::command"],[194,"yansi::color"],[195,"core::fmt"],[196,"clap_builder::parser::matches::arg_matches"],[197,"clap_builder"],[198,"core::result"],[199,"clap_builder::util::id"],[200,"core::option"],[201,"cairo_lang_utils::ordered_hash_map"],[202,"cairo_lang_semantic::substitution"],[203,"alloc::vec"],[204,"alloc::collections::vec_deque"],[205,"alloc::boxed"],[206,"anyhow"],[207,"clap_builder::builder::possible_value"],[208,"core::any"],[209,"yansi::condition"]],"i":"Ab`0`0Al1000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`10101010101010101010101010101010101010101000001010101001010010111010101010100011010101010","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}4306215{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333````33{{bCf}{{j{{b{c}}}}}{}}04444`4411`44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????","D":"A@d","p":[[1,"reference"],[5,"Private",190],[1,"unit"],[6,"Attribute",191],[5,"Painted",192],[5,"Command",193],[6,"Color",194],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",195],[8,"Result",195],[5,"Args",0],[5,"ArgMatches",196],[8,"Error",197],[6,"Result",198],[5,"Id",199],[6,"Option",200],[5,"OrderedHashMap",201],[6,"RewriteResult",202],[5,"Vec",203],[5,"VecDeque",204],[5,"Box",205],[1,"tuple"],[8,"Result",206],[6,"Quirk",191],[5,"PossibleValue",207],[5,"TypeId",208],[1,"slice"],[5,"Condition",209]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADwADQAAAAEAAwACAAkAAQAVAAMALQAEADYAAwA8AAEAQgABAEYAAQBKABAAZQAAAKQABwCuAAgA"}],["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","input","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","load_program","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","parse_input","parse_output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","starknet","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_dump"],[192,"dyn_clone::sealed"],[193,"yansi::attr_quirk"],[194,"yansi::paint"],[195,"clap_builder::builder::command"],[196,"yansi::color"],[197,"core::fmt"],[198,"clap_builder::parser::matches::arg_matches"],[199,"clap_builder"],[200,"core::result"],[201,"clap_builder::util::id"],[202,"core::option"],[203,"cairo_lang_semantic::substitution"],[204,"alloc::vec"],[205,"alloc::collections::vec_deque"],[206,"cairo_lang_utils::ordered_hash_map"],[207,"alloc::boxed"],[208,"std::path"],[209,"cairo_lang_sierra::program"],[210,"core::error"],[211,"alloc::string"],[212,"core::any"],[213,"yansi::condition"]],"i":"``Ad0Ab1010001010101010101010101010101010101010101010001010101010101010101000100100000000111111101010101`01`0101010101010101010101010101010101010101010``01010101010100101010101010101000101010101","f":"````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}07777{Af{{b{c}}}{}}0{Af{{b{A`c}}}{}}099{Aff}0;;{{bAh}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Aj}}}Al}{{{b{Ad}}{b{A`Aj}}}Al}{cc{}}0{{{b{An}}}{{Bb{AbB`}}}}{{{b{A`An}}}{{Bb{AbB`}}}}{b{{j{{b{c}}}}}{}}0{{}{{Bf{Bd}}}}{{}Af}0`{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Bj{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bn{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{c}}}}}{{Bb{Bhe}}}{}{}}4635210{{}c{}}0::::::{{{b{Cd}}Cf}{{Bb{Ch{Cb{Cj}}}}}};;{{}{{Bb{f{Cb{Cj}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<{{bAh}{{j{{b{c}}}}}{}}0========{{bAhAhAh}{{j{{b{c}}}}}{}}0>>>>`{{{b{Cl}}}{{Bb{CnD`}}}}{{{b{Cl}}}{{Bb{AdD`}}}}{b{{j{{b{c}}}}}{}}0{{bDb}{{j{{b{c}}}}}{}}011111144`11{bc{}}0{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bDd}055{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Ab}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Ab}}{b{A`An}}}{{Bb{fB`}}}}{{}c{}}0{{bDf}{{j{{b{c}}}}}{}}0;;;;;;","D":"Of","p":[[1,"reference"],[5,"Private",192],[1,"unit"],[6,"Attribute",193],[5,"Painted",194],[5,"Command",195],[6,"Color",196],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[1,"u8"],[5,"Formatter",197],[8,"Result",197],[5,"ArgMatches",198],[8,"Error",199],[6,"Result",200],[5,"Id",201],[6,"Option",202],[6,"RewriteResult",203],[5,"Vec",204],[5,"VecDeque",205],[1,"tuple"],[5,"OrderedHashMap",206],[5,"Box",207],[5,"Path",208],[1,"bool"],[5,"Program",209],[10,"Error",210],[1,"str"],[5,"PathBuf",208],[5,"String",211],[6,"Quirk",193],[5,"TypeId",212],[5,"Condition",213]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAAEUADgAAAAYACQABABUAAwAtAAcAOQADAD8AAQBFAAEASQABAE0AEQBnAAAAagAAAJUAAgCnAAcAsQAHAA=="}],["cairo_native_run",{"t":"PFPGNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNCNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","available_gas","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","path","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","run_mode","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_run"],[190,"cairo_native_run::utils"],[369,"cairo_native_run::utils::test"],[624,"dyn_clone::sealed"],[625,"yansi::attr_quirk"],[626,"yansi::paint"],[627,"clap_builder::builder::command"],[628,"yansi::color"],[629,"core::fmt"],[630,"clap_builder::parser::matches::arg_matches"],[631,"clap_builder"],[632,"core::result"],[633,"clap_builder::util::id"],[634,"core::option"],[635,"alloc::vec"],[636,"cairo_lang_semantic::substitution"],[637,"alloc::collections::vec_deque"],[638,"alloc::boxed"],[639,"cairo_lang_utils::ordered_hash_map"],[640,"anyhow"],[641,"clap_builder::builder::possible_value"],[642,"core::any"],[643,"yansi::condition"],[644,"cairo_lang_sierra::program"],[645,"starknet_types_core::felt"],[646,"alloc::vec::into_iter"],[647,"alloc::string"],[648,"cairo_native::values"],[649,"cairo_native::execution_result"],[650,"cairo_lang_runner"],[651,"cairo_lang_test_plugin"],[652,"scarb_metadata"],[653,"cairo_lang_test_plugin::test_config"],[654,"cairo_lang_sierra::ids"],[655,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ab`0`0Al10000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`1010101010101010101010101010101010101010100010101010101000101110101010101000`11010101010D`0``0Ff1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fh0```EdFj2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0`{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}3460125{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333``33{{bCf}{{j{{b{c}}}}}{}}044444411``44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}`{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000998800000000000000000000{{{b{D`}}}D`}{{b{b{A`c}}}f{}}{bf}3333{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}055{Adf}077{{{b{Db}}{b{Dd}}}{{Cd{{b{Df}}}}}}{{bAf}{{j{{b{c}}}}}{}}0{{{b{D`}}{b{A`Ah}}}Aj}{{{Dj{Dh}}}Dl}{cc{}}0;;{{}Ad}0{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}5210346{{}c{}}0{b{{j{{b{c}}}}}{}}000{{{b{Dn}}}{{Bh{Dh}}}}111111111111111111111111111111>>11111111{{bAfAfAf}{{j{{b{c}}}}}{}}02222`22{{bCf}{{j{{b{c}}}}}{}}0333333{{{b{E`}}}{{Cd{Eb}}}}22`44`{bc{}}{{{b{D`}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Cl{D`}}}}}}=={{bCn}{{j{{b{c}}}}}{}}0======`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{b{c}}}{}}00{Ad{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{Ed}}Ad}f}{Adf}00``555{{EfEhEhDl}{{Cb{EfAd}}}}{{{b{Ej}}}{{Bh{{b{El}}}}}}{{bAf}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}36145024532106{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAfAfAf}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bCf}{{j{{b{c}}}}}{}}00111111111222{{{Bh{{Cb{DlEn}}}}Db{C`{F`{C`{FbFd}}}}Ff}{{Cd{Ed}}}}`222{c{{Bb{e}}}{}{}}00{{}{{Bb{c}}}{}}00{bCj}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bCn}{{j{{b{c}}}}}{}}00888888888","D":"CGn","p":[[1,"reference"],[5,"Private",624],[1,"unit"],[6,"Attribute",625],[5,"Painted",626],[5,"Command",627],[6,"Color",628],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",629],[8,"Result",629],[5,"Args",0],[5,"ArgMatches",630],[8,"Error",631],[6,"Result",632],[5,"Id",633],[6,"Option",634],[5,"Vec",635],[6,"RewriteResult",636],[5,"VecDeque",637],[5,"Box",638],[5,"OrderedHashMap",639],[1,"tuple"],[8,"Result",640],[6,"Quirk",625],[5,"PossibleValue",641],[5,"TypeId",642],[1,"slice"],[5,"Condition",643],[6,"RunMode",190],[5,"Program",644],[1,"str"],[8,"Function",644],[5,"Felt",645],[5,"IntoIter",646],[5,"String",647],[6,"Value",648],[5,"ExecutionResult",649],[6,"RunResultValue",650],[5,"TestsSummary",369],[5,"TestCompilation",651],[1,"bool"],[5,"PackageMetadata",652],[5,"TargetMetadata",652],[5,"TestConfig",653],[5,"FunctionId",654],[6,"CostTokenType",655],[1,"i32"],[5,"RunArgs",190],[6,"TestStatus",369],[5,"TestResult",369]],"r":[],"b":[],"c":"OzAAAAEAAAYAAwAsAAEA5gABAKoBAgA=","e":"OzAAAAEAALEAIAAAAAEAAwACAAkAAQAWAAMALgAEADcAAwA9AAEAQwABAEcAAQBLABAAZgAAAKMABwCtAAkAvwAEANAAAwDoAAIA7wADAPUAAQD8AAAAAgEPAEcBAABVAQAAWAEIAGMBBgByAQEAiQEFALMBBQC9AQQA0QEYADgCAABQAggAXAIIAA=="}],["cairo_native_runtime",{"t":"SSFFFFHHNNNNNNNNHHHHHHHHHHHHHHHHONNNHONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BYTES_IN_WORD","BYTE_ARRAY_MAGIC","DICT_GAS_REFUND_PER_ACCESS","FeltDict","FormattedItem","HALF_PRIME","as_cairo_short_string","as_cairo_short_string_ex","borrow","","","","borrow_mut","","","","cairo_native__dict_drop","cairo_native__dict_dup","cairo_native__dict_gas_refund","cairo_native__dict_get","cairo_native__dict_new","cairo_native__get_costs_builtin","cairo_native__libfunc__debug__print","cairo_native__libfunc__ec__ec_point_from_x_nz","cairo_native__libfunc__ec__ec_point_try_new_nz","cairo_native__libfunc__ec__ec_state_add","cairo_native__libfunc__ec__ec_state_add_mul","cairo_native__libfunc__ec__ec_state_init","cairo_native__libfunc__ec__ec_state_try_finalize_nz","cairo_native__libfunc__hades_permutation","cairo_native__libfunc__pedersen","cairo_native__set_costs_builtin","count","deref","","fmt","format_next_item","free_fn","from","","","","get","inner","into","","","","quote_if_string","try_from","","","","try_into","","","","type_id","","","","upcast","","","","upcast_mut","","","","vzip","","",""],"q":[[0,"cairo_native_runtime"],[73,"starknet_types_core::felt"],[74,"alloc::string"],[75,"core::option"],[76,"core::ffi"],[77,"core::fmt"],[78,"core::iter::traits::iterator"],[79,"core::clone"],[80,"core::result"],[81,"core::any"]],"i":"````````BlBdBfn3210````````````````0210`032103032103321032103210321032103210","f":"``````{{{d{b}}}{{h{f}}}}{{{d{b}}j}{{h{f}}}}{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}000{{n{h{{Af{A`}{{Ab{Ad}}}}}}}Ad}{{n{Af{A`}{{Ab{A`}}}}}n}{nAh}{{{d{ln}}{d{{Al{Aj}}}}}A`}{{{Af{A`}{{Ab{Ad}}}}}n}{{}Ah}{{AnAlB`}An}{{{d{l{Al{{Al{Aj}}}}}}}Bb}0{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{Aj}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Bb}{{{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}}Ad}{{{d{l{Al{Aj}}}}{d{{Al{Aj}}}}{d{{Al{Aj}}}}}Ad}{AhAh}`{{{d{Bd}}}{{d{b}}}}{{{d{Bf}}}{{d{Ah}}}}{{{d{n}}{d{lBh}}}Bj}{{{d{lc}}}{{h{Bl}}}{{C`{}{{Bn{b}}}}Cb}}`{cc{}}000{Blf}`{{}c{}}0001{c{{Cd{e}}}{}{}}000{{}{{Cd{c}}}{}}000{dCf}000{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}0005555","D":"Cn","p":[[5,"Felt",73],[1,"reference"],[5,"String",74],[6,"Option",75],[1,"usize"],[0,"mut"],[5,"FeltDict",0],[6,"c_void",76],[17,"Output"],[1,"unit"],[1,"fn"],[1,"u64"],[1,"u8"],[1,"array"],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[5,"Formatter",77],[8,"Result",77],[5,"FormattedItem",0],[17,"Item"],[10,"Iterator",78],[10,"Clone",79],[6,"Result",80],[5,"TypeId",81]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACoABwAAAAMABgAAAAkABwAhAAMAJgAAACwAAAAyABcA"}],["cairo_native_stress",{"t":"SJFFSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNHHNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","command","command_for_update","compile_and_insert","conceal","","context","cyan","","deref","","deref_mut","","dim","","directory_get_size","directory_is_empty","drop","","fg","","fixed","","fmt","from","","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","modify_starknet_contract","new","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","rounds","set_global_subscriber","strike","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_stress"],[188,"yansi::attr_quirk"],[189,"yansi::paint"],[190,"clap_builder::builder::command"],[191,"yansi::color"],[192,"cairo_lang_sierra::program"],[193,"cairo_native::ffi"],[194,"cairo_native::executor::aot"],[195,"alloc::sync"],[196,"core::cmp"],[197,"core::hash"],[198,"core::fmt"],[199,"std::io::error"],[200,"std::path"],[201,"core::convert"],[202,"clap_builder::parser::matches::arg_matches"],[203,"clap_builder"],[204,"core::result"],[205,"cairo_lang_sierra::ids"],[206,"core::option"],[207,"clap_builder::util::id"],[208,"alloc::boxed"],[209,"cairo_lang_semantic::substitution"],[210,"alloc::vec"],[211,"alloc::collections::vec_deque"],[212,"cairo_lang_utils::ordered_hash_map"],[213,"cairo_native::context"],[214,"core::any"],[215,"yansi::condition"]],"i":"`````nC`001010101010101010101010101010101011000110110101010``10101001000`110010111111100000001010101010`10`1101010101010101010101010101010101010101001010101010100`10101010101010001010101010","f":"`````{{bd}{{f{{b{c}}}}}{}}0{hh}0{{bj}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0222222222222222222`22{{}h}0{{{b{l{n{c}}}}c{b{A`}}Ab}{{Af{Ad}}}{AhAjAlAn}}44`44{B`{{b{c}}}{}}0{B`{{b{lc}}}{}}066{c{{Bd{Bb}}}{{Bh{Bf}}}}{c{{Bd{Bj}}}{{Bh{Bf}}}}{B`Bl}0::{{bBn}{{f{{b{c}}}}}{}}0{{{b{C`}}{b{lCb}}}Cd}{cc{}}0{{{b{Cf}}}{{Cj{C`Ch}}}}{{{b{lCf}}}{{Cj{C`Ch}}}}{Cl{{D`{CnA`}}}}{{{b{{n{c}}}}{b{c}}}{{Db{{Af{Ad}}}}}{AhAjAlAn}}{b{{f{{b{c}}}}}{}}0{{}{{Db{Dd}}}}{{}B`}0{{{b{l}}{b{l{Df{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Cj{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{D`{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Dj{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dl{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dn{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Db{c}}}}}{{Cj{Dhe}}}{}{}}1034265{{}c{}}0::::::::{{}Bl};;{{A`ClCl}A`}{{{b{E`}}}{{n{c}}}{AhAjAlAn}}========================{{bBn}{{f{{b{c}}}}}{}}0>>>>>>>>{{bBnBnBn}{{f{{b{c}}}}}{}}0????`??{{bEb}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000022`{{{b{C`}}}Bl}11{c{{Cj{e}}}{}{}}0{{}{{Cj{c}}}{}}0{bEd}044{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{{b{lC`}}{b{Cf}}}{{Cj{BlCh}}}}{{{b{lC`}}{b{lCf}}}{{Cj{BlCh}}}}??{{bEf}{{f{{b{c}}}}}{}}0999999","D":"A@j","p":[[1,"reference"],[6,"Attribute",188],[5,"Painted",189],[5,"Command",190],[6,"Color",191],[0,"mut"],[5,"NaiveAotCache",0],[5,"Program",192],[6,"OptLevel",193],[5,"AotNativeExecutor",194],[5,"Arc",195],[10,"PartialEq",196],[10,"Eq",196],[10,"Hash",197],[10,"Display",198],[1,"usize"],[1,"u64"],[8,"Result",199],[5,"Path",200],[10,"AsRef",201],[1,"bool"],[1,"unit"],[1,"u8"],[5,"StressTestCommand",0],[5,"Formatter",198],[8,"Result",198],[5,"ArgMatches",202],[8,"Error",203],[6,"Result",204],[1,"u32"],[5,"FunctionId",205],[1,"tuple"],[6,"Option",206],[5,"Id",207],[5,"Box",208],[6,"RewriteResult",209],[5,"Vec",210],[5,"VecDeque",211],[5,"OrderedHashMap",212],[5,"NativeContext",213],[6,"Quirk",188],[5,"TypeId",214],[5,"Condition",215]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADcAEQACAAAACAABABQAAwAqAAAALQABADIAAAA1AAMAPAACAEMAAABGAAEASQAAAEwAEABnAAAAawAAAKIAAAClAAUArQAHAA=="}],["cairo_native_test",{"t":"FONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNOONNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOONNNNNNOOONNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","attr","augment_args","augment_args_for_update","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","command","command_for_update","conceal","cyan","deref","deref_mut","dim","drop","fg","filter","fixed","fmt","from","from_arg_matches","from_arg_matches_mut","green","group_id","ignored","include_ignored","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","main","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","opt_level","path","primary","quirk","rapid_blink","red","resetting","rgb","run_mode","single_file","starknet","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","whenever","white","wrap","yellow","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_test"],[102,"cairo_native_test::utils"],[281,"cairo_native_test::utils::test"],[536,"yansi::attr_quirk"],[537,"yansi::paint"],[538,"clap_builder::builder::command"],[539,"yansi::color"],[540,"core::fmt"],[541,"clap_builder::parser::matches::arg_matches"],[542,"clap_builder"],[543,"core::result"],[544,"clap_builder::util::id"],[545,"core::option"],[546,"alloc::boxed"],[547,"cairo_lang_semantic::substitution"],[548,"cairo_lang_utils::ordered_hash_map"],[549,"alloc::collections::vec_deque"],[550,"alloc::vec"],[551,"anyhow"],[552,"core::any"],[553,"yansi::condition"],[554,"dyn_clone::sealed"],[555,"cairo_lang_sierra::program"],[556,"starknet_types_core::felt"],[557,"alloc::vec::into_iter"],[558,"alloc::string"],[559,"cairo_native::values"],[560,"cairo_native::execution_result"],[561,"cairo_lang_runner"],[562,"clap_builder::builder::possible_value"],[563,"cairo_lang_test_plugin"],[564,"scarb_metadata"],[565,"cairo_lang_test_plugin::test_config"],[566,"cairo_lang_sierra::ids"],[567,"cairo_lang_sierra::extensions::modules::gas"]],"i":"`Ad0000000000000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`00000Cj0``0Fd1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Ff0```EbFh2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``{{bd}{{f{{b{c}}}}}{}}{hh}0{{bj}{{f{{b{c}}}}}{}}{b{{f{{b{c}}}}}{}}000{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}2222222222{{}h}033{n{{b{c}}}{}}{n{{b{lc}}}{}}5{nA`}7`{{bAb}{{f{{b{c}}}}}{}}{{{b{Ad}}{b{lAf}}}Ah}{cc{}}{{{b{Aj}}}{{An{AdAl}}}}{{{b{lAj}}}{{An{AdAl}}}};{{}{{Bb{B`}}}}``{{}n}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{}c{}}{b{{f{{b{c}}}}}{}}000{{}{{C`{A`}}}}1111111111111{{bAb}{{f{{b{c}}}}}{}}2222{{bAbAbAb}{{f{{b{c}}}}}{}}33``3{{bCb}{{f{{b{c}}}}}{}}4441```4{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bCd}7{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}{{{b{lAd}}{b{Aj}}}{{An{A`Al}}}}{{{b{lAd}}{b{lAj}}}{{An{A`Al}}}}`<{{bCf}{{f{{b{c}}}}}{}}<<<````{{bCh}A`}{{bd}{{f{{b{c}}}}}{}}0{{bj}{{f{{b{c}}}}}{}}0????????7766????????????????????{{{b{Cj}}}Cj}{{b{b{lc}}}A`{}}{bA`}{b{{f{{b{c}}}}}{}}000{n{{b{c}}}{}}0{n{{b{lc}}}{}}022{nA`}077{{{b{Cl}}{b{Cn}}}{{C`{{b{D`}}}}}}{{bAb}{{f{{b{c}}}}}{}}0{{{b{Cj}}{b{lAf}}}Ah}{{{Dd{Db}}}Df}{cc{}}088{{}n}0{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}2631054{{}c{}}0{b{{f{{b{c}}}}}{}}000{{{b{Dh}}}{{Bn{Db}}}}111111111111111111111111111111>>11111111{{bAbAbAb}{{f{{b{c}}}}}{}}02222`22{{bCb}{{f{{b{c}}}}}{}}0333333{{{b{Dj}}}{{C`{Dl}}}}22`44`{bc{}}{{{b{Cj}}}{{Bb{Dn}}}}{c{{An{e}}}{}{}}0{{}{{An{c}}}{}}0{bCd}099{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{}{{b{{E`{Cj}}}}}}=={{bCf}{{f{{b{c}}}}}{}}0======`````{{bd}{{f{{b{c}}}}}{}}00{{bj}{{f{{b{c}}}}}{}}00????????????555444????????????????????????????????????{n{{b{c}}}{}}00{n{{b{lc}}}{}}00{b{{f{{b{c}}}}}{}}00{{{b{Eb}}n}A`}{nA`}00``555{{EdEfEfDf}{{Bh{Edn}}}}{{{b{Eh}}}{{Bn{{b{Ej}}}}}}{{bAb}{{f{{b{c}}}}}{}}00{cc{}}00`666`{{}n}00{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}41620356203514{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAbAbAb}{{f{{b{c}}}}}{}}00{b{{f{{b{c}}}}}{}}00000`000{{bCb}{{f{{b{c}}}}}{}}00111111111222{{{Bn{{Bh{DfEl}}}}Cl{Bj{En{Bj{F`Fb}}}}Fd}{{C`{Eb}}}}`222{c{{An{e}}}{}{}}00{{}{{An{c}}}{}}00{bCd}00555{b{{b{c}}}{}}00{{{b{l}}}{{b{lc}}}{}}00999{{bCf}{{f{{b{c}}}}}{}}00888888888","D":"C@j","p":[[1,"reference"],[6,"Attribute",536],[5,"Painted",537],[5,"Command",538],[6,"Color",539],[0,"mut"],[1,"usize"],[1,"unit"],[1,"u8"],[5,"Args",0],[5,"Formatter",540],[8,"Result",540],[5,"ArgMatches",541],[8,"Error",542],[6,"Result",543],[5,"Id",544],[6,"Option",545],[5,"Box",546],[6,"RewriteResult",547],[1,"tuple"],[5,"OrderedHashMap",548],[5,"VecDeque",549],[5,"Vec",550],[8,"Result",551],[6,"Quirk",536],[5,"TypeId",552],[5,"Condition",553],[5,"Private",554],[6,"RunMode",102],[5,"Program",555],[1,"str"],[8,"Function",555],[5,"Felt",556],[5,"IntoIter",557],[5,"String",558],[6,"Value",559],[5,"ExecutionResult",560],[6,"RunResultValue",561],[5,"PossibleValue",562],[1,"slice"],[5,"TestsSummary",281],[5,"TestCompilation",563],[1,"bool"],[5,"PackageMetadata",564],[5,"TargetMetadata",564],[5,"TestConfig",565],[5,"FunctionId",566],[6,"CostTokenType",567],[1,"i32"],[5,"RunArgs",102],[6,"TestStatus",281],[5,"TestResult",281]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAUAEAAAABYAjgCPAFIBUwFUAQ==","e":"OzAAAAEAAJMAIAAAAAAABAABAAsAAQAXAAEAGwABAB4AAAAiAAAAJAABACcAAAAqAAcANwAAAFkAAgBdAAUAZwAEAHgAAwCQAAIAlwADAJ0AAQCkAAAAqgAPAO8AAAD9AAAAAAEIAAsBBgAaAQEAMQEFAFsBBQBlAQQAeQEYAOABAAD4AQgABAIIAA=="}],["scarb_native_dump",{"t":"HCPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[181,"scarb_native_dump::utils::test"],[436,"anyhow"],[437,"dyn_clone::sealed"],[438,"yansi::attr_quirk"],[439,"yansi::paint"],[440,"yansi::color"],[441,"cairo_lang_sierra::program"],[442,"core::fmt"],[443,"starknet_types_core::felt"],[444,"alloc::vec::into_iter"],[445,"alloc::string"],[446,"alloc::vec"],[447,"cairo_lang_semantic::substitution"],[448,"core::result"],[449,"core::option"],[450,"cairo_lang_utils::ordered_hash_map"],[451,"alloc::boxed"],[452,"alloc::collections::vec_deque"],[453,"cairo_native::values"],[454,"cairo_native::execution_result"],[455,"cairo_lang_runner"],[456,"clap_builder::builder::possible_value"],[457,"core::any"],[458,"yansi::condition"],[459,"cairo_lang_test_plugin"],[460,"scarb_metadata"],[461,"cairo_lang_test_plugin::test_config"],[462,"cairo_lang_sierra::ids"],[463,"cairo_lang_sierra::extensions::modules::gas"]],"i":"``Ab0``0Ej1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101El0```DhEn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"{{}{{d{b}}}}`````{{fh}b}{{fj}{{l{{f{c}}}}}{}}0{{fn}{{l{{f{c}}}}}{}}0{f{{l{{f{c}}}}}{}}0000000{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}022222222222222222222{{{f{Ab}}}Ab}{{f{f{A`c}}}b{}}{fb}5555{Ad{{f{c}}}{}}0{Ad{{f{A`c}}}{}}077{Adb}099{{{f{Af}}{f{Ah}}}{{d{{f{Aj}}}}}}{{fAl}{{l{{f{c}}}}}{}}0{{{f{Ab}}{f{A`An}}}B`}{{{Bd{Bb}}}Bf}{cc{}}0=={{}Ad}0{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}6510342{{}c{}}0{f{{l{{f{c}}}}}{}}000{{{f{Ch}}}{{Bh{Bb}}}}111111111111111111111111111111>>11111111{{fAlAlAl}{{l{{f{c}}}}}{}}02222`22{{fCj}{{l{{f{c}}}}}{}}0333333{{{f{Cl}}}{{d{Cn}}}}22`44`{fc{}}{{{f{Ab}}}{{Bn{D`}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{fDb}099{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}0{{}{{f{{Dd{Ab}}}}}}=={{fDf}{{l{{f{c}}}}}{}}0======`````{{fj}{{l{{f{c}}}}}{}}00{{fn}{{l{{f{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{f{c}}}{}}00{Ad{{f{A`c}}}{}}00{f{{l{{f{c}}}}}{}}00{{{f{Dh}}Ad}b}{Adb}00``555{{DjDlDlBf}{{C`{DjAd}}}}{{{f{Dn}}}{{Bh{{f{E`}}}}}}{{fAl}{{l{{f{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}63504210245631{{}c{}}00???????????????????????????????????????????????????:::????????????{{fAlAlAl}{{l{{f{c}}}}}{}}00{f{{l{{f{c}}}}}{}}00000`000{{fCj}{{l{{f{c}}}}}{}}00111111111222{{{Bh{{C`{BfEb}}}}Af{Cb{Ed{Cb{EfEh}}}}Ej}{{d{Dh}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{fDb}00555{f{{f{c}}}{}}00{{{f{A`}}}{{f{A`c}}}{}}00999{{fDf}{{l{{f{c}}}}}{}}00888888888","D":"BGn","p":[[1,"unit"],[8,"Result",436],[1,"reference"],[5,"Private",437],[6,"Attribute",438],[5,"Painted",439],[6,"Color",440],[0,"mut"],[6,"RunMode",2],[1,"usize"],[5,"Program",441],[1,"str"],[8,"Function",441],[1,"u8"],[5,"Formatter",442],[8,"Result",442],[5,"Felt",443],[5,"IntoIter",444],[5,"String",445],[5,"Vec",446],[6,"RewriteResult",447],[6,"Result",448],[6,"Option",449],[1,"tuple"],[5,"OrderedHashMap",450],[5,"Box",451],[5,"VecDeque",452],[6,"Value",453],[6,"Quirk",438],[5,"ExecutionResult",454],[6,"RunResultValue",455],[5,"PossibleValue",456],[5,"TypeId",457],[1,"slice"],[5,"Condition",458],[5,"TestsSummary",181],[5,"TestCompilation",459],[1,"bool"],[5,"PackageMetadata",460],[5,"TargetMetadata",460],[5,"TestConfig",461],[5,"FunctionId",462],[6,"CostTokenType",463],[1,"i32"],[5,"RunArgs",2],[6,"TestStatus",181],[5,"TestResult",181]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAQAEAAAACoAKwDuAO8A8AA=","e":"OzAAAAEAAHUAFAAAAAAAAgAFABQAAwAsAAIAMwADADkAAQBAAAAARgAPAIsAAACZAAAAnAAIAKcABgC2AAEAzQAFAPcABQABAQQAFQEYAHwBAACUAQgAoAEIAA=="}],["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNONNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOONNNONNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","","attr","","","augment_args","augment_args_for_update","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize_test_compilation","dim","","","drop","","","fg","","","filter","fixed","","","fmt","","from","","","from_arg_matches","from_arg_matches_mut","green","","","group_id","ignored","include_ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","main","mask","","","matches","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","opt_level","packages_filter","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_mode","seen","strike","","","test_kind","to_owned","","to_possible_value","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","","","whenever","","","white","","","wrap","","","yellow","","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_test"],[284,"scarb_native_test::utils"],[463,"scarb_native_test::utils::test"],[718,"dyn_clone::sealed"],[719,"yansi::attr_quirk"],[720,"yansi::paint"],[721,"clap_builder::builder::command"],[722,"yansi::color"],[723,"std::path"],[724,"alloc::string"],[725,"cairo_lang_test_plugin"],[726,"anyhow"],[727,"core::fmt"],[728,"clap_builder::parser::matches::arg_matches"],[729,"clap_builder"],[730,"core::result"],[731,"clap_builder::util::id"],[732,"core::option"],[733,"cairo_lang_semantic::substitution"],[734,"cairo_lang_utils::ordered_hash_map"],[735,"alloc::vec"],[736,"alloc::boxed"],[737,"alloc::collections::vec_deque"],[738,"clap_builder::builder::possible_value"],[739,"core::any"],[740,"yansi::condition"],[741,"cairo_lang_sierra::program"],[742,"starknet_types_core::felt"],[743,"alloc::vec::into_iter"],[744,"cairo_native::values"],[745,"cairo_native::execution_result"],[746,"cairo_lang_runner"],[747,"scarb_metadata"],[748,"cairo_lang_test_plugin::test_config"],[749,"cairo_lang_sierra::ids"],[750,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ad`0``0Ab101Af111201201201201201201201201201201201201201201201201201212121112012020120120`12012012011201212011120111120111111122222220000000120120120120120`12021201201201201201201201201201201201201201201201201201201201201112012012012012012010120112212012012012012012011`20120120120120120Dl0``0Fj1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fl0```ElFn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}00{ll}0{{bn}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000000{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00222222222222222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}0777777{{}Ad}{{}Af}{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{{{b{Aj}}Al}{{B`{An}}}}<<<{Ahf}00>>>`{{bBb}{{j{{b{c}}}}}{}}00{{{b{Ab}}{b{A`Bd}}}Bf}{{{b{Ad}}{b{A`Bd}}}Bf}{cc{}}00{{{b{Bh}}}{{Bl{AbBj}}}}{{{b{A`Bh}}}{{Bl{AbBj}}}}{b{{j{{b{c}}}}}{}}00{{}{{C`{Bn}}}}``{{}Ah}00{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}64105321623504{{}c{}}00::::::::::::{{}{{B`{f}}}};;;{{{b{Ad}}{b{Cn}}}D`}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{{bBb}{{j{{b{c}}}}}{}}00============{{bBbBbBb}{{j{{b{c}}}}}{}}00>>>>>>``>>>{{bDb}{{j{{b{c}}}}}{}}00?????????111``???`{bc{}}0{{{b{Ad}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{A`Ab}}{b{Bh}}}{{Bl{fBj}}}}{{{b{A`Ab}}{b{A`Bh}}}{{Bl{fBj}}}}`{{}{{b{{Dh{Ad}}}}}}{{{b{A`Af}}AlAl}D`}{{}c{}}00{{bDj}{{j{{b{c}}}}}{}}00888888888````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0;;;;;;;;::99;;;;;;;;;;;;;;;;;;;;{{{b{Dl}}}Dl}{{b{b{A`c}}}f{}}{bf}>>>>{Ah{{b{c}}}{}}0{Ah{{b{A`c}}}{}}0{b{{j{{b{c}}}}}{}}0{Ahf}077{{{b{Dn}}{b{Cn}}}{{B`{{b{E`}}}}}}{{bBb}{{j{{b{c}}}}}{}}0{{{b{Dl}}{b{A`Bd}}}Bf}{{{Ed{Eb}}}Al}{cc{}}066{{}Ah}0{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}3260145{{}c{}}0????{{{b{Ef}}}{{Cf{Eb}}}}{b{{j{{b{c}}}}}{}}00000000000000000000000000000>>00000000{{bBbBbBb}{{j{{b{c}}}}}{}}01111`11{{bDb}{{j{{b{c}}}}}{}}0222222{{{b{Eh}}}{{B`{Ej}}}}22`33`{bc{}}{{{b{Dl}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{bDf}088{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Dh{Dl}}}}}}=={{bDj}{{j{{b{c}}}}}{}}0<<<<<<`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00>>>>>>>>>>>>555444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{El}}Ah}f}{Ahf}00``555{{AnD`D`Al}{{Cl{AnAh}}}}{{{b{En}}}{{Cf{{b{F`}}}}}}{{bBb}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ah}00{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}63215044015632{{}c{}}00???????????????????????????????????????????????????:::????????????{{bBbBbBb}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bDb}{{j{{b{c}}}}}{}}00111111111222{{{Cf{{Cl{AlFb}}}}Dn{Cd{Fd{Cd{FfFh}}}}Fj}{{B`{El}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bDj}{{j{{b{c}}}}}{}}00888888888","D":"COj","p":[[1,"reference"],[5,"Private",718],[1,"unit"],[6,"Attribute",719],[5,"Painted",720],[5,"Command",721],[6,"Color",722],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",723],[5,"String",724],[5,"TestCompilation",725],[8,"Result",726],[1,"u8"],[5,"Formatter",727],[8,"Result",727],[5,"ArgMatches",728],[8,"Error",729],[6,"Result",730],[5,"Id",731],[6,"Option",732],[6,"RewriteResult",733],[5,"OrderedHashMap",734],[5,"Vec",735],[5,"Box",736],[5,"VecDeque",737],[1,"tuple"],[1,"str"],[1,"bool"],[6,"Quirk",719],[5,"PossibleValue",738],[5,"TypeId",739],[1,"slice"],[5,"Condition",740],[6,"RunMode",284],[5,"Program",741],[8,"Function",741],[5,"Felt",742],[5,"IntoIter",743],[6,"Value",744],[5,"ExecutionResult",745],[6,"RunResultValue",746],[5,"TestsSummary",463],[5,"PackageMetadata",747],[5,"TargetMetadata",747],[5,"TestConfig",748],[5,"FunctionId",749],[6,"CostTokenType",750],[1,"i32"],[5,"RunArgs",284],[6,"TestStatus",463],[5,"TestResult",463]],"r":[],"b":[],"c":"OzAAAAEAAAcAAwA+AAIARAEBAAgCAgA=","e":"OzAAAAEAANEAJQAAAAEAAwAFAAwAAQAdAAUAQQAHAE8ACABbAAIAZQABAGoAAQBvAAAAcgAXAJkAAACdAAAA2wAAAO8AAAD0AAsAAwEJAA4BAgAdAQQALgEDAEYBAgBNAQMAUwEBAFoBAABgAQ8ApQEAALMBAAC2AQgAwQEGANABAQDnAQUAEQIFABsCBAAvAhgAlgIAAK4CCAC6AggA"}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[80988,4248,4400,10771,2697,4820,10005,7613,11631]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[80978,4248,4400,10771,2697,4820,10005,7613,11631]}
\ No newline at end of file
diff --git a/settings.html b/settings.html
index 267049dc2..d5cca9ee8 100644
--- a/settings.html
+++ b/settings.html
@@ -1 +1 @@
-Settings Rustdoc settings
Back
\ No newline at end of file
+Settings Rustdoc settings
Back
\ No newline at end of file
diff --git a/src/cairo_native/arch/x86_64.rs.html b/src/cairo_native/arch/x86_64.rs.html
index 89667bdbc..ea9668373 100644
--- a/src/cairo_native/arch/x86_64.rs.html
+++ b/src/cairo_native/arch/x86_64.rs.html
@@ -210,45 +210,6 @@
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
//! # Implementations of `AbiArgument` for the `x86_64` architecture.
//!
//! The x86_64 architecture uses 6 64-bit registers for arguments. This means that the first 48
@@ -271,93 +232,55 @@
impl AbiArgument for bool {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(1).align());
- buffer.push((*self) as u8);
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u8 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(8).align());
- buffer.push(*self);
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i8 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(8).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u16 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(16).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i16 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(16).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u32 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(32).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i32 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(32).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u64 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() >= 48 {
- align_to(buffer, get_integer_layout(64).align());
- }
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -365,9 +288,6 @@
impl AbiArgument for i64 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() >= 48 {
- align_to(buffer, get_integer_layout(64).align());
- }
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -378,6 +298,7 @@
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(128).align());
}
+
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -388,6 +309,7 @@
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(128).align());
}
+
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -415,13 +337,13 @@
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
// The `bytes31` type is treated as a 248-bit integer, therefore it follows the same
// splitting rules as them.
+
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(252).align());
}
buffer.extend_from_slice(self);
buffer.push(0);
-
Ok(())
}
}
diff --git a/src/cairo_native/executor.rs.html b/src/cairo_native/executor.rs.html
index 79b0e4508..73a2f1b74 100644
--- a/src/cairo_native/executor.rs.html
+++ b/src/cairo_native/executor.rs.html
@@ -766,6 +766,8 @@
766
767
768
+769
+770
//! # Executors
//!
//! This module provides methods to execute the programs, either via JIT or compiled ahead
@@ -1119,7 +1121,6 @@
#[cfg(target_arch = "aarch64")] mut ret_registers: [u64; 4],
) -> Result<Value, Error> {
let type_info = registry.get_type(type_id)?;
- let debug_name = type_info.info().long_id.to_string();
// Align the pointer to the actual return value.
if let Some(return_ptr) = &mut return_ptr {
@@ -1141,11 +1142,12 @@
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?),
CoreTypeConcrete::Box(info) => unsafe {
let ptr =
return_ptr.unwrap_or_else(|| NonNull::new_unchecked(ret_registers[0] as *mut ()));
- let value = Value::from_ptr(ptr, &info.ty, registry)?;
+ let value = Value::from_ptr(ptr, &info.ty, registry, true)?;
libc_free(ptr.cast().as_ptr());
Ok(value)
},
@@ -1153,6 +1155,7 @@
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?),
CoreTypeConcrete::Felt252(_)
| CoreTypeConcrete::StarkNet(
@@ -1161,7 +1164,7 @@
| StarkNetTypeConcrete::StorageAddress(_)
| StarkNetTypeConcrete::StorageBaseAddress(_),
) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
#[cfg(target_arch = "x86_64")]
// Since x86_64's return values hold at most two different 64bit registers,
@@ -1180,7 +1183,7 @@
}
},
CoreTypeConcrete::Bytes31(_) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
#[cfg(target_arch = "x86_64")]
// Since x86_64's return values hold at most two different 64bit registers,
@@ -1195,7 +1198,7 @@
}
},
CoreTypeConcrete::BoundedInt(info) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
let mut data = if info.range.offset_bit_width() <= 64 {
BigInt::from(ret_registers[0])
@@ -1267,7 +1270,7 @@
Ok(Value::Null)
} else {
let ptr = NonNull::new_unchecked(ptr);
- let value = Value::from_ptr(ptr, &info.ty, registry)?;
+ let value = Value::from_ptr(ptr, &info.ty, registry, true)?;
libc_free(ptr.as_ptr().cast());
Ok(value)
}
@@ -1323,7 +1326,7 @@
}
};
let value = match ptr {
- Ok(ptr) => Box::new(Value::from_ptr(ptr, &info.variants[tag], registry)?),
+ Ok(ptr) => Box::new(Value::from_ptr(ptr, &info.variants[tag], registry, true)?),
Err(offset) => {
ret_registers.copy_within(offset.., 0);
Box::new(parse_result(
@@ -1338,27 +1341,28 @@
Ok(Value::Enum {
tag,
value,
- debug_name: Some(debug_name),
+ debug_name: Some(type_info.info().long_id.to_string()),
})
}
CoreTypeConcrete::Struct(info) => {
if info.members.is_empty() {
Ok(Value::Struct {
fields: Vec::new(),
- debug_name: Some(debug_name),
+ debug_name: Some(type_info.info().long_id.to_string()),
})
} else {
Ok(Value::from_ptr(
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?)
}
}
CoreTypeConcrete::Felt252Dict(_) | CoreTypeConcrete::SquashedFelt252Dict(_) => unsafe {
let ptr = return_ptr
.unwrap_or_else(|| NonNull::new_unchecked((&raw mut ret_registers[0]) as *mut ()));
- Ok(Value::from_ptr(ptr, type_id, registry)?)
+ Ok(Value::from_ptr(ptr, type_id, registry, true)?)
},
CoreTypeConcrete::Snapshot(info) => {
diff --git a/src/cairo_native/executor/contract.rs.html b/src/cairo_native/executor/contract.rs.html
index 67b25e846..2ccbbdc54 100644
--- a/src/cairo_native/executor/contract.rs.html
+++ b/src/cairo_native/executor/contract.rs.html
@@ -831,6 +831,24 @@
831
832
833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
//! A specialized executor for Starknet contracts, avoiding the overhead of storing the sierra program registry and
//! enabling efficient serialization of the program/data once compiled.
//!
@@ -867,7 +885,7 @@
use crate::{
arch::AbiArgument,
context::NativeContext,
- error::{panic::ToNativeAssertError, Error},
+ error::{panic::ToNativeAssertError, Error, Result},
execution_result::{BuiltinStats, ContractExecutionResult},
executor::invoke_trampoline,
metadata::gas::MetadataComputationConfig,
@@ -979,7 +997,7 @@
sierra_program: &Program,
entry_points: &ContractEntryPoints,
opt_level: OptLevel,
- ) -> Result<Self, Error> {
+ ) -> Result<Self> {
let native_context = NativeContext::new();
let mut entry_point_selector_to_id = BTreeMap::new();
@@ -1094,7 +1112,7 @@
}
/// Save the library to the desired path, alongside it is saved also a json file with additional info.
- pub fn save(&mut self, to: impl AsRef<Path>) -> Result<(), Error> {
+ pub fn save(&mut self, to: impl AsRef<Path>) -> Result<()> {
let to = to.as_ref();
std::fs::copy(&self.path, to)?;
@@ -1109,7 +1127,7 @@
}
/// Load the executor from an already compiled library with the additional info json file.
- pub fn load(library_path: &Path) -> Result<Self, Error> {
+ pub fn load(library_path: &Path) -> Result<Self> {
let info_str = std::fs::read_to_string(library_path.with_extension("json"))?;
let contract_info: NativeContractInfo = serde_json::from_str(&info_str)?;
Ok(Self {
@@ -1136,7 +1154,7 @@
gas: u64,
builtin_costs: Option<BuiltinCosts>,
mut syscall_handler: impl StarknetSyscallHandler,
- ) -> Result<ContractExecutionResult, Error> {
+ ) -> Result<ContractExecutionResult> {
let arena = Bump::new();
let mut invoke_data = Vec::<u8>::new();
@@ -1150,12 +1168,7 @@
};
let function_ptr = self.find_function_ptr(&function_id, true)?;
- let builtin_costs = builtin_costs.unwrap_or_default();
- let builtin_costs_stack: [u64; 7] = builtin_costs.into();
- // Note: the ptr into a slice is valid, it can be used with cast()
- // Care should be taken if you dereference it and take the .as_ptr() of the slice, since when you
- // deref it, it will be a copy on the stack, so you will get the ptr of the value in the stack.
- let builtin_costs: *mut [u64; 7] = Box::into_raw(Box::new(builtin_costs_stack));
+ let builtin_costs: [u64; 7] = builtin_costs.unwrap_or_default().into();
let set_costs_builtin = unsafe {
self.library
.get::<extern "C" fn(*const u64) -> *const u64>(
@@ -1163,7 +1176,7 @@
)?
};
// We may be inside a recursive contract, save the possible saved builtin costs to restore it after our call.
- let old_builtincosts_ptr = set_costs_builtin(builtin_costs.cast());
+ let old_builtincosts_ptr = set_costs_builtin(builtin_costs.as_ptr());
// it can vary from contract to contract thats why we need to store/ load it.
let builtins_size: usize = self.contract_info.entry_points_info[&function_id.id]
@@ -1189,7 +1202,7 @@
}
BuiltinType::BuiltinCosts => {
// todo: check if valid
- builtin_costs_stack.as_ptr().to_bytes(&mut invoke_data)?;
+ builtin_costs.as_ptr().to_bytes(&mut invoke_data)?;
}
BuiltinType::System => {
(&mut syscall_handler as *mut StarknetSyscallHandlerCallbacks<_>)
@@ -1202,18 +1215,42 @@
}
let felt_layout = get_integer_layout(252).pad_to_align();
- let ptr: *mut () = unsafe { libc_malloc(felt_layout.size() * args.len()).cast() };
+ let refcount_offset = get_integer_layout(32)
+ .align_to(felt_layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size();
+
+ let ptr = match args.len() {
+ 0 => std::ptr::null_mut(),
+ _ => unsafe {
+ let ptr: *mut () =
+ libc_malloc(felt_layout.size() * args.len() + refcount_offset).cast();
+
+ // Write reference count.
+ ptr.cast::<u32>().write(1);
+ ptr.byte_add(refcount_offset)
+ },
+ };
let len: u32 = args
.len()
.try_into()
.to_native_assert_error("number of arguments should fit into a u32")?;
ptr.to_bytes(&mut invoke_data)?;
- 0u32.to_bytes(&mut invoke_data)?; // start
- len.to_bytes(&mut invoke_data)?; // end
- len.to_bytes(&mut invoke_data)?; // cap
+ if cfg!(target_arch = "aarch64") {
+ 0u32.to_bytes(&mut invoke_data)?; // start
+ len.to_bytes(&mut invoke_data)?; // end
+ len.to_bytes(&mut invoke_data)?; // cap
+ } else if cfg!(target_arch = "x86_64") {
+ (0u32 as u64).to_bytes(&mut invoke_data)?; // start
+ (len as u64).to_bytes(&mut invoke_data)?; // end
+ (len as u64).to_bytes(&mut invoke_data)?; // cap
+ } else {
+ unreachable!("unsupported architecture");
+ }
- for (idx, elem) in args.iter().enumerate() {
+ for (idx, elem) in args.iter().enumerate() {
let f = elem.to_bytes_le();
unsafe {
std::ptr::copy_nonoverlapping(
@@ -1354,7 +1391,12 @@
}
if !array_ptr.is_null() {
- unsafe { libc_free(array_ptr.cast()) };
+ unsafe {
+ let ptr = array_ptr.byte_sub(refcount_offset);
+ assert_eq!(ptr.cast::<u32>().read(), 1);
+
+ libc_free(ptr.cast());
+ }
}
let error_msg = if tag != 0 {
@@ -1371,14 +1413,8 @@
None
};
- // Restore the old ptr and get back our builtincost box and free it.
- let our_builtincosts_ptr = set_costs_builtin(old_builtincosts_ptr);
-
- if !our_builtincosts_ptr.is_null() && old_builtincosts_ptr.is_aligned() {
- unsafe {
- let _ = Box::<[u64; 7]>::from_raw(our_builtincosts_ptr.cast_mut().cast());
- };
- }
+ // Restore the original builtin costs pointer.
+ set_costs_builtin(old_builtincosts_ptr);
#[cfg(feature = "with-mem-tracing")]
crate::utils::mem_tracing::report_stats();
@@ -1395,7 +1431,7 @@
&self,
function_id: &FunctionId,
is_for_contract_executor: bool,
- ) -> Result<*mut c_void, Error> {
+ ) -> Result<*mut c_void> {
let function_name = generate_function_name(function_id, is_for_contract_executor);
let function_name = format!("_mlir_ciface_{function_name}");
diff --git a/src/cairo_native/libfuncs.rs.html b/src/cairo_native/libfuncs.rs.html
index e8fb9dcdb..78455dd94 100644
--- a/src/cairo_native/libfuncs.rs.html
+++ b/src/cairo_native/libfuncs.rs.html
@@ -632,9 +632,9 @@
Self::Const(selector) => self::r#const::build(
context, registry, entry, location, helper, metadata, selector,
),
- Self::Coupon(info) => {
- self::coupon::build(context, registry, entry, location, helper, metadata, info)
- }
+ Self::Coupon(selector) => self::coupon::build(
+ context, registry, entry, location, helper, metadata, selector,
+ ),
Self::CouponCall(info) => self::function_call::build(
context, registry, entry, location, helper, metadata, info,
),
diff --git a/src/cairo_native/libfuncs/array.rs.html b/src/cairo_native/libfuncs/array.rs.html
index c7616528f..070d7878a 100644
--- a/src/cairo_native/libfuncs/array.rs.html
+++ b/src/cairo_native/libfuncs/array.rs.html
@@ -2513,44 +2513,474 @@
2513
2514
2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
//! # Array libfuncs
-// TODO: A future possible improvement would be to put the array behind a double pointer and a
-// reference counter, to avoid unnecessary clones.
-
use super::LibfuncHelper;
use crate::{
- error::{panic::ToNativeAssertError, Error, Result},
+ error::{Error, Result, SierraAssertError},
metadata::{
- drop_overrides::DropOverridesMeta, realloc_bindings::ReallocBindingsMeta, MetadataStorage,
+ drop_overrides::DropOverridesMeta, dup_overrides::DupOverridesMeta,
+ realloc_bindings::ReallocBindingsMeta, MetadataStorage,
},
- native_assert, native_panic,
- types::TypeBuilder,
- utils::{BlockExt, GepIndex, ProgramRegistryExt},
+ utils::{get_integer_layout, BlockExt, GepIndex, ProgramRegistryExt},
};
use cairo_lang_sierra::{
extensions::{
array::{ArrayConcreteLibfunc, ConcreteMultiPopLibfunc},
core::{CoreLibfunc, CoreType, CoreTypeConcrete},
lib_func::{SignatureAndTypeConcreteLibfunc, SignatureOnlyConcreteLibfunc},
- ConcreteLibfunc,
+ types::InfoAndTypeConcreteType,
},
program_registry::ProgramRegistry,
};
use melior::{
dialect::{
arith::{self, CmpiPredicate},
- cf,
- llvm::{self, r#type::pointer},
- ods, scf,
+ cf, llvm, ods, scf,
},
ir::{
- attribute::{DenseI32ArrayAttribute, IntegerAttribute},
- r#type::IntegerType,
- Block, Location, Region, Value, ValueLike,
+ attribute::IntegerAttribute, r#type::IntegerType, Block, Location, Region, Value, ValueLike,
},
Context,
};
+use std::alloc::Layout;
/// Select and call the correct libfunc builder function from the selector.
pub fn build<'ctx, 'this>(
@@ -2566,15 +2996,33 @@
ArrayConcreteLibfunc::New(info) => {
build_new(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::Append(info) => {
- build_append(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::SpanFromTuple(info) => {
+ build_span_from_tuple(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::PopFront(info) => {
- build_pop_front(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::TupleFromSpan(info) => {
+ build_tuple_from_span(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::PopFrontConsume(info) => {
- build_pop_front_consume(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::Append(info) => {
+ build_append(context, registry, entry, location, helper, metadata, info)
}
+ ArrayConcreteLibfunc::PopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
+ ArrayConcreteLibfunc::PopFrontConsume(info) => build_pop::<true, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
ArrayConcreteLibfunc::Get(info) => {
build_get(context, registry, entry, location, helper, metadata, info)
}
@@ -2584,23 +3032,41 @@
ArrayConcreteLibfunc::Len(info) => {
build_len(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::SnapshotPopFront(info) => {
- build_snapshot_pop_front(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SnapshotPopBack(info) => {
- build_snapshot_pop_back(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SpanFromTuple(info) => {
- build_span_from_tuple(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::TupleFromSpan(info) => {
- build_tuple_from_span(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SnapshotMultiPopFront(info) => build_snapshot_multi_pop_front(
- context, registry, entry, location, helper, metadata, info,
+ ArrayConcreteLibfunc::SnapshotPopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
+ ArrayConcreteLibfunc::SnapshotPopBack(info) => build_pop::<false, true>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
),
- ArrayConcreteLibfunc::SnapshotMultiPopBack(info) => build_snapshot_multi_pop_back(
- context, registry, entry, location, helper, metadata, info,
+ ArrayConcreteLibfunc::SnapshotMultiPopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Multi(info),
+ ),
+ ArrayConcreteLibfunc::SnapshotMultiPopBack(info) => build_pop::<false, true>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Multi(info),
),
}
}
@@ -2608,37 +3074,33 @@
/// Generate MLIR operations for the `array_new` libfunc.
pub fn build_new<'ctx, 'this>(
context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ _registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureOnlyConcreteLibfunc,
+ _metadata: &mut MetadataStorage,
+ _info: &SignatureOnlyConcreteLibfunc,
) -> Result<()> {
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.branch_signatures()[0].vars[0].ty,
- )?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr = entry
- .append_op_result(ods::llvm::mlir_zero(context, pointer(context, 0), location).into())?;
+ let nullptr = entry.append_op_result(llvm::zero(ptr_ty, location))?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
- let k0 = entry.const_int(context, location, 0, 32)?;
- let value = entry.append_op_result(llvm::undef(array_ty, location))?;
- let value = entry.insert_value(context, location, value, ptr, 0)?;
- let value = entry.insert_value(context, location, value, k0, 1)?;
- let value = entry.insert_value(context, location, value, k0, 2)?;
- let value = entry.insert_value(context, location, value, k0, 3)?;
+ let value = entry.append_op_result(llvm::undef(
+ llvm::r#type::r#struct(context, &[ptr_ty, len_ty, len_ty, len_ty], false),
+ location,
+ ))?;
+ let value = entry.insert_values(context, location, value, &[nullptr, k0, k0, k0])?;
entry.append_operation(helper.br(0, &[value], location));
Ok(())
}
-/// Generate MLIR operations for the `array_append` libfunc.
-pub fn build_append<'ctx, 'this>(
+/// Generate MLIR operations for the `span_from_tuple` libfunc.
+///
+/// Note: The `&info.ty` field has the entire `[T; N]` tuple. It is not the `T` in `Array<T>`.
+pub fn build_span_from_tuple<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
@@ -2647,237 +3109,264 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- // Algorithm:
- // - If array_end < capacity, then append.
- // - If array_end == capacity:
- // - If array_start == 0: realloc, then append.
- // - If array_start != 0: memmove, then append.
-
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let tuple_len = {
+ let CoreTypeConcrete::Struct(info) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ info.members.len()
+ };
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
- let elem_stride = elem_layout.pad_to_align().size();
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
+ let (_, tuple_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
- let k1 = entry.const_int(context, location, 1, 32)?;
+ let array_len_bytes = tuple_layout.pad_to_align().size();
+ let array_len_bytes_with_offset = entry.const_int(
+ context,
+ location,
+ array_len_bytes + calc_refcount_offset(tuple_layout),
+ 64,
+ )?;
+ let array_len_bytes = entry.const_int(context, location, array_len_bytes, 64)?;
+ let array_len = entry.const_int_from_type(context, location, tuple_len, len_ty)?;
- let elem_stride = entry.const_int(context, location, elem_stride, 64)?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
+ let k1 = entry.const_int_from_type(context, location, 1, len_ty)?;
- let array_end = entry.extract_value(context, location, entry.arg(0)?, len_ty, 2)?;
- let array_capacity = entry.extract_value(context, location, entry.arg(0)?, len_ty, 3)?;
+ let array_ptr = entry.append_op_result(llvm::zero(ptr_ty, location))?;
+ let array_ptr = entry.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ array_ptr,
+ array_len_bytes_with_offset,
+ location,
+ )?)?;
+ entry.store(context, location, array_ptr, k1)?;
- let has_tail_space = entry.cmpi(
+ let array_ptr = entry.gep(
context,
- CmpiPredicate::Ult,
- array_end,
- array_capacity,
location,
+ array_ptr,
+ &[GepIndex::Const(calc_refcount_offset(tuple_layout) as i32)],
+ IntegerType::new(context, 8).into(),
)?;
+ entry.memcpy(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ array_ptr,
+ array_len_bytes,
+ );
+ entry.append_operation(ReallocBindingsMeta::free(
+ context,
+ entry.argument(0)?.into(),
+ location,
+ )?);
- let handle_block = helper.append_block(Block::new(&[]));
- let memmove_block = helper.append_block(Block::new(&[]));
- let realloc_block = helper.append_block(Block::new(&[]));
- let append_block = helper.append_block(Block::new(&[(array_ty, location)]));
-
- entry.append_operation(cf::cond_br(
+ let value = entry.append_op_result(llvm::undef(
+ llvm::r#type::r#struct(context, &[ptr_ty, len_ty, len_ty, len_ty], false),
+ location,
+ ))?;
+ let value = entry.insert_values(
context,
- has_tail_space,
- append_block,
- handle_block,
- &[entry.arg(0)?],
- &[],
location,
- ));
+ value,
+ &[array_ptr, k0, array_len, array_len],
+ )?;
- {
- let k0 = handle_block.const_int(context, location, 0, 32)?;
- let array_start =
- handle_block.extract_value(context, location, entry.arg(0)?, len_ty, 1)?;
+ entry.append_operation(helper.br(0, &[value], location));
+ Ok(())
+}
- let has_head_space =
- handle_block.cmpi(context, CmpiPredicate::Ne, array_start, k0, location)?;
- handle_block.append_operation(cf::cond_br(
- context,
- has_head_space,
- memmove_block,
- realloc_block,
- &[],
- &[],
- location,
- ));
- }
+/// Generate MLIR operations for the `tuple_from_span` libfunc.
+///
+/// Note: The `&info.ty` field has the entire `[T; N]` tuple. It is not the `T` in `Array<T>`.
+pub fn build_tuple_from_span<'ctx, 'this>(
+ context: &'ctx Context,
+ registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ entry: &'this Block<'ctx>,
+ location: Location<'ctx>,
+ helper: &LibfuncHelper<'ctx, 'this>,
+ metadata: &mut MetadataStorage,
+ info: &SignatureAndTypeConcreteLibfunc,
+) -> Result<()> {
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
- {
- let array_start =
- memmove_block.extract_value(context, location, entry.arg(0)?, len_ty, 1)?;
+ let elem_id = {
+ let CoreTypeConcrete::Snapshot(info) =
+ registry.get_type(&info.signature.param_signatures[0].ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+ let CoreTypeConcrete::Array(info) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let start_offset =
- memmove_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let start_offset = memmove_block.muli(start_offset, elem_stride, location)?;
+ &info.ty
+ };
+ let tuple_len_const = {
+ let CoreTypeConcrete::Struct(param) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let dst_ptr = memmove_block.extract_value(context, location, entry.arg(0)?, ptr_ty, 0)?;
- let src_ptr = memmove_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- dst_ptr,
- &[start_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ param.members.len()
+ };
- let array_len =
- memmove_block.append_op_result(arith::subi(array_end, array_start, location))?;
- let memmove_len =
- memmove_block.extui(array_len, IntegerType::new(context, 64).into(), location)?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
+ let (_, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, elem_id)?;
+ let (tuple_ty, tuple_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
- let memmove_len = memmove_block.muli(memmove_len, elem_stride, location)?;
- memmove_block.append_operation(
- ods::llvm::intr_memmove(
- context,
- dst_ptr,
- src_ptr,
- memmove_len,
- IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
- location,
- )
- .into(),
- );
+ let array_ptr = entry.extract_value(context, location, entry.argument(0)?.into(), ptr_ty, 0)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
- let k0 = memmove_block.const_int_from_type(context, location, 0, len_ty)?;
- let value = memmove_block.insert_value(context, location, entry.arg(0)?, k0, 1)?;
- let value = memmove_block.insert_value(context, location, value, array_len, 2)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let tuple_len = entry.const_int_from_type(context, location, tuple_len_const, len_ty)?;
+ let len_matches = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Eq,
+ array_len,
+ tuple_len,
+ location,
+ ))?;
- memmove_block.append_operation(cf::br(append_block, &[value], location));
- }
+ let valid_block = helper.append_block(Block::new(&[]));
+ let error_block = helper.append_block(Block::new(&[]));
+ entry.append_operation(cf::cond_br(
+ context,
+ len_matches,
+ valid_block,
+ error_block,
+ &[],
+ &[],
+ location,
+ ));
+
+ // Ensure the type's clone and drop implementations are registered.
+ registry.build_type(
+ context,
+ helper,
+ registry,
+ metadata,
+ &info.signature.param_signatures[0].ty,
+ )?;
{
- let k8 = realloc_block.const_int(context, location, 8, 32)?;
- let k1024 = realloc_block.const_int(context, location, 1024, 32)?;
-
- // Array allocation growth formula:
- // new_len = max(8, old_len + min(1024, 2 * old_len));
- let new_capacity = realloc_block.shli(array_end, k1, location)?;
- let new_capacity =
- realloc_block.append_op_result(arith::minui(new_capacity, k1024, location))?;
- let new_capacity = realloc_block.addi(new_capacity, array_end, location)?;
- let new_capacity =
- realloc_block.append_op_result(arith::maxui(new_capacity, k8, location))?;
-
- let realloc_size = {
- let new_capacity = realloc_block.extui(
- new_capacity,
- IntegerType::new(context, 64).into(),
- location,
- )?;
- realloc_block.muli(new_capacity, elem_stride, location)?
- };
+ let value_size = valid_block.const_int(context, location, tuple_layout.size(), 64)?;
- let ptr = realloc_block.extract_value(context, location, entry.arg(0)?, ptr_ty, 0)?;
- let ptr = realloc_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- ptr,
- realloc_size,
- location,
+ let value = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context, value, value_size, location,
)?)?;
- // No need to memmove, guaranteed by the fact that if we needed to memmove we'd have gone
- // through the memmove block instead of reallocating.
-
- let value = realloc_block.insert_value(context, location, entry.arg(0)?, ptr, 0)?;
- let value = realloc_block.insert_value(context, location, value, new_capacity, 3)?;
-
- realloc_block.append_operation(cf::br(append_block, &[value], location));
- }
-
- {
- let ptr = append_block.extract_value(context, location, append_block.arg(0)?, ptr_ty, 0)?;
- let array_end =
- append_block.extract_value(context, location, append_block.arg(0)?, len_ty, 2)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- let offset =
- append_block.extui(array_end, IntegerType::new(context, 64).into(), location)?;
- let offset = append_block.muli(offset, elem_stride, location)?;
- let ptr = append_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ let array_start_offset = valid_block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
location,
))?;
+ let array_start_offset = valid_block.append_op_result(arith::muli(
+ array_start_offset,
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?,
+ location,
+ ))?;
+ let array_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(array_start_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- append_block.store(context, location, ptr, entry.arg(1)?)?;
-
- let array_len = append_block.addi(array_end, k1, location)?;
- let value =
- append_block.insert_value(context, location, append_block.arg(0)?, array_len, 2)?;
-
- append_block.append_operation(helper.br(0, &[value], location));
- }
-
- Ok(())
-}
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let src_ptr = array_ptr;
+ let dst_ptr = value;
+
+ let value = block.load(context, location, src_ptr, tuple_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, src_ptr, values.0)?;
+ block.store(context, location, dst_ptr, values.1)?;
+ }
+ _ => block.memcpy(context, location, array_ptr, value, value_size),
+ }
-/// Generate MLIR operations for the `array_len` libfunc.
-pub fn build_len<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ // The following unwrap should be unreachable because an array always has a drop
+ // implementation.
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_value = entry.arg(0)?;
+ block.memcpy(context, location, array_ptr, value, value_size);
- let array_start = entry.extract_value(context, location, array_value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, array_value, len_ty, 2)?;
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ valid_block.append_operation(helper.br(0, &[value], location));
+ }
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta)
- if drop_overrides_meta.is_overriden(&info.signature.param_signatures[0].ty) =>
- {
- drop_overrides_meta.invoke_override(
+ {
+ metadata
+ .get::<DropOverridesMeta>()
+ .ok_or(Error::MissingMetadata)?
+ .invoke_override(
context,
- entry,
+ error_block,
location,
&info.signature.param_signatures[0].ty,
- entry.arg(0)?,
+ entry.argument(0)?.into(),
)?;
- }
- _ => {}
+
+ error_block.append_operation(helper.br(1, &[], location));
}
- entry.append_operation(helper.br(0, &[array_len], location));
Ok(())
}
-/// Generate MLIR operations for the `array_get` libfunc.
-pub fn build_get<'ctx, 'this>(
+/// Generate MLIR operations for the `array_append` libfunc.
+pub fn build_append<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
@@ -2886,720 +3375,1116 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = super::increment_builtin_counter(context, entry, location, entry.arg(0)?)?;
-
- let array_ty = registry.build_type(
+ /*
+ * 1. Check if shared.
+ * 2. If shared:
+ * 1. Deep clone with space for at least 1 extra element.
+ * 3. If not shared:
+ * 1. Either realloc, move or do nothing.
+ * 4. Append element.
+ */
+
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
+
+ let self_ty = registry.build_type(
context,
helper,
registry,
metadata,
- &info.param_signatures()[1].ty,
+ &info.signature.param_signatures[0].ty,
)?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
- let elem_stride = elem_layout.pad_to_align().size();
- let elem_ty = elem_ty.build(context, helper, registry, metadata, &info.ty)?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride = entry.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let value = entry.arg(1)?;
- let index = entry.arg(2)?;
+ let k0 = entry.const_int(context, location, 0, 32)?;
+ let k1 = entry.const_int(context, location, 1, 32)?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
+ let array_ptr = entry.extract_value(context, location, entry.argument(0)?.into(), ptr_ty, 0)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
+ let array_capacity =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 3)?;
let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let is_valid = entry.cmpi(context, CmpiPredicate::Ult, index, array_len, location)?;
+ let array_size = entry.append_op_result(arith::extui(
+ array_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let array_size = entry.append_op_result(arith::muli(array_size, elem_stride, location))?;
- let valid_block = helper.append_block(Block::new(&[]));
- let error_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let data_offset = entry.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let data_offset = entry.append_op_result(arith::muli(data_offset, elem_stride, location))?;
+ let data_ptr = entry.gep(
context,
- is_valid,
- valid_block,
- error_block,
- &[],
- &[],
location,
- ));
+ array_ptr,
+ &[GepIndex::Value(data_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- {
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ fn compute_next_capacity<'ctx, 'this>(
+ context: &'ctx Context,
+ block: &'this Block<'ctx>,
+ location: Location<'ctx>,
+ elem_stride: Value<'ctx, 'this>,
+ array_end: Value<'ctx, 'this>,
+ ) -> Result<(Value<'ctx, 'this>, Value<'ctx, 'this>)> {
+ let len_ty = IntegerType::new(context, 32).into();
+
+ let k1 = block.const_int_from_type(context, location, 1, len_ty)?;
+ let k8 = block.const_int_from_type(context, location, 8, len_ty)?;
+ let k1024 = block.const_int_from_type(context, location, 1024, len_ty)?;
+
+ let realloc_len = block.append_op_result(arith::shli(array_end, k1, location))?;
+ let realloc_len = block.append_op_result(arith::minui(realloc_len, k1024, location))?;
+ let realloc_len = block.append_op_result(arith::addi(realloc_len, array_end, location))?;
+ let realloc_len = block.append_op_result(arith::maxui(realloc_len, k8, location))?;
+
+ let realloc_size = block.append_op_result(arith::extui(
+ realloc_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let realloc_size =
+ block.append_op_result(arith::muli(realloc_size, elem_stride, location))?;
- let array_start =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let index = {
- let index = valid_block.extui(index, IntegerType::new(context, 64).into(), location)?;
- valid_block.addi(array_start, index, location)?
- };
+ Result::Ok((realloc_len, realloc_size))
+ }
- let elem_stride = valid_block.const_int(context, location, elem_stride, 64)?;
- let elem_offset = valid_block.muli(elem_stride, index, location)?;
+ let is_empty = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Eq,
+ array_capacity,
+ k0,
+ location,
+ ))?;
- let elem_ptr = valid_block.gep(
- context,
- location,
- ptr,
- &[GepIndex::Value(elem_offset)],
- IntegerType::new(context, 8).into(),
- )?;
+ let is_shared = entry.append_op_result(scf::r#if(
+ is_empty,
+ &[IntegerType::new(context, 1).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
+ let k0 = block.const_int(context, location, 0, 1)?;
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
- location,
- target_ptr,
- "realloc returned nullptr",
- )?;
+ block.append_operation(scf::r#yield(&[k0], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- // There's no need to clone it since we're moving it out of the array.
- valid_block.memcpy(context, location, elem_ptr, target_ptr, elem_size);
+ let is_shared = is_shared(context, entry, location, array_ptr, elem_layout)?;
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
- let array_end =
- valid_block.extui(array_end, IntegerType::new(context, 64).into(), location)?;
+ block.append_operation(scf::r#yield(&[is_shared], location));
+ region
+ },
+ location,
+ ))?;
- let array_start = valid_block.muli(array_start, elem_stride, location)?;
- let array_end = valid_block.muli(array_end, elem_stride, location)?;
+ let value = entry.append_op_result(scf::r#if(
+ is_shared,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- valid_block.append_operation(scf::r#for(
- array_start,
- array_end,
- elem_stride,
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
+ let has_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ugt,
+ array_capacity,
+ array_len,
+ location,
+ ))?;
- let value_ptr = block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[block.arg(0)?],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ let op = block.append_operation(scf::r#if(
+ has_space,
+ &[len_ty, IntegerType::new(context, 64).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let is_target_element = block.append_op_result(
- ods::llvm::icmp(
- context,
- IntegerType::new(context, 1).into(),
- value_ptr,
- elem_ptr,
- IntegerAttribute::new(IntegerType::new(context, 64).into(), 0)
- .into(),
- location,
- )
- .into(),
- )?;
- block.append_operation(scf::r#if(
- is_target_element,
- &[],
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[]));
+ let clone_size = block.append_op_result(arith::extui(
+ array_capacity,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let clone_size =
+ block.append_op_result(arith::muli(clone_size, elem_stride, location))?;
+
+ block.append_operation(scf::r#yield(&[array_capacity, clone_size], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let (realloc_capacity, realloc_size) =
+ compute_next_capacity(context, &block, location, elem_stride, array_end)?;
+
+ block.append_operation(scf::r#yield(
+ &[realloc_capacity, realloc_size],
+ location,
+ ));
+ region
+ },
+ location,
+ ));
+ let clone_capacity = op.result(0)?.into();
+ let clone_size = op.result(1)?.into();
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[]));
+ let clone_size_with_refcount = block.append_op_result(arith::addi(
+ clone_size,
+ block.const_int(context, location, calc_refcount_offset(elem_layout), 64)?,
+ location,
+ ))?;
- let value = block.load(context, location, value_ptr, elem_ty)?;
- drop_overrides_meta
- .invoke_override(context, &block, location, &info.ty, value)?;
+ let clone_ptr = block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let clone_ptr = block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ clone_ptr,
+ clone_size_with_refcount,
+ location,
+ )?)?;
+ block.store(context, location, clone_ptr, k1)?;
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- location,
- ));
+ let clone_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- location,
- ));
- }
- _ => {}
- }
- valid_block.append_operation(ReallocBindingsMeta::free(context, ptr, location)?);
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let k0 = block.const_int(context, location, 0, 64)?;
+ block.append_operation(scf::r#for(
+ k0,
+ array_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
- valid_block.append_operation(helper.br(0, &[range_check, target_ptr], location));
- }
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, array_ptr, clone_ptr, clone_size),
+ }
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
- context,
- error_block,
- location,
- &info.param_signatures()[1].ty,
- value,
- )?;
- error_block.append_operation(helper.br(1, &[range_check], location));
+ let clone_value = block.append_op_result(llvm::zero(self_ty, location))?;
+ let clone_value = block.insert_values(
+ context,
+ location,
+ clone_value,
+ &[clone_ptr, k0, array_len, clone_capacity],
+ )?;
- Ok(())
-}
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
-/// Generate MLIR operations for the `array_pop_front` libfunc.
-pub fn build_pop_front<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ block.append_operation(scf::r#yield(&[clone_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let has_tail_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ult,
+ array_end,
+ array_capacity,
+ location,
+ ))?;
+ let array_value = block.append_op_result(scf::r#if(
+ has_tail_space,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.append_operation(scf::r#yield(&[entry.argument(0)?.into()], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let has_head_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ugt,
+ array_start,
+ k0,
+ location,
+ ))?;
+ let array_value = block.append_op_result(scf::r#if(
+ has_head_space,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.append_operation(
+ ods::llvm::intr_memmove(
+ context,
+ array_ptr,
+ data_ptr,
+ array_size,
+ IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
+ location,
+ )
+ .into(),
+ );
+
+ let array_value = block.insert_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ k0,
+ 1,
+ )?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 2)?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let offset_array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let array_ptr = block.append_op_result(arith::select(
+ is_empty,
+ array_ptr,
+ offset_array_ptr,
+ location,
+ ))?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let (realloc_len, realloc_size) = compute_next_capacity(
+ context,
+ &block,
+ location,
+ elem_stride,
+ array_end,
+ )?;
+ let realloc_size_with_refcount =
+ block.append_op_result(arith::addi(
+ realloc_size,
+ block.const_int(
+ context,
+ location,
+ calc_refcount_offset(elem_layout),
+ 64,
+ )?,
+ location,
+ ))?;
+
+ let array_ptr =
+ block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ array_ptr,
+ realloc_size_with_refcount,
+ location,
+ )?)?;
+
+ let ref_count = block.load(context, location, array_ptr, len_ty)?;
+ let ref_count = block.append_op_result(arith::select(
+ is_empty, k1, ref_count, location,
+ ))?;
+ block.store(context, location, array_ptr, ref_count)?;
+
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let array_value = block.insert_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ array_ptr,
+ 0,
+ )?;
+ let array_value = block.insert_value(
+ context,
+ location,
+ array_value,
+ realloc_len,
+ 3,
+ )?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
- let value = entry.arg(0)?;
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
+ let array_ptr = entry.extract_value(context, location, value, ptr_ty, 0)?;
let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
-
- let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let data_offset = entry.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let data_offset = entry.append_op_result(arith::muli(data_offset, elem_stride, location))?;
+ let data_ptr = entry.gep(
context,
- is_empty,
- empty_block,
- valid_block,
- &[],
- &[],
location,
- ));
-
- {
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
-
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
-
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
- location,
- target_ptr,
- "realloc returned nullptr",
- )?;
-
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
-
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_start = valid_block.addi(array_start, k1, location)?;
- let value = valid_block.insert_value(context, location, value, new_start, 1)?;
+ array_ptr,
+ &[GepIndex::Value(data_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ entry.store(context, location, data_ptr, entry.argument(1)?.into())?;
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
- }
+ let array_end = entry.append_op_result(arith::addi(array_end, k1, location))?;
+ let value = entry.insert_value(context, location, value, array_end, 2)?;
- empty_block.append_operation(helper.br(1, &[value], location));
+ entry.append_operation(helper.br(0, &[value], location));
Ok(())
}
-/// Generate MLIR operations for the `array_pop_front_consume` libfunc.
-pub fn build_pop_front_consume<'ctx, 'this>(
+#[derive(Clone, Copy)]
+enum PopInfo<'a> {
+ Single(&'a SignatureAndTypeConcreteLibfunc),
+ Multi(&'a ConcreteMultiPopLibfunc),
+}
+
+/// Generate MLIR operations for the `array_pop_*` libfuncs.
+///
+/// Template arguments:
+/// - Consume: Whether to consume or not the array on failure.
+/// - Reverse: False for front-popping, true for back-popping.
+///
+/// The `info` argument contains how many items to pop.
+fn build_pop<'ctx, 'this, const CONSUME: bool, const REVERSE: bool>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
+ info: PopInfo,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ /*
+ * 1. Check if there's enough data to pop.
+ * 2. If there is not enough data, maybe consume and return.
+ * 3. Allocate output.
+ * 4. Clone or copy the popped data.
+ * - Clone if shared.
+ * - Copy if not shared.
+ */
+
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
+
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let (self_ty, elem_ty, array_value, extract_len, mut branch_values) = match info {
+ PopInfo::Single(info) => (
+ &info.signature.param_signatures[0].ty,
+ &info.ty,
+ entry.argument(0)?.into(),
+ 1,
+ Vec::new(),
+ ),
+ PopInfo::Multi(ConcreteMultiPopLibfunc {
+ popped_ty,
+ signature,
+ }) => {
+ let range_check = super::increment_builtin_counter(
+ context,
+ entry,
+ location,
+ entry.argument(0)?.into(),
+ )?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let CoreTypeConcrete::Snapshot(InfoAndTypeConcreteType { ty, .. }) =
+ registry.get_type(&signature.param_signatures[1].ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+
+ let CoreTypeConcrete::Array(InfoAndTypeConcreteType { ty, .. }) =
+ registry.get_type(ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+
+ let CoreTypeConcrete::Struct(info) = registry.get_type(popped_ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+ debug_assert!(info.members.iter().all(|member_ty| member_ty == ty));
+
+ (
+ &signature.param_signatures[1].ty,
+ ty,
+ entry.argument(1)?.into(),
+ info.members.len(),
+ vec![range_check],
+ )
+ }
+ };
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ registry.build_type(context, helper, registry, metadata, self_ty)?;
+ let extract_len_value = entry.const_int_from_type(context, location, extract_len, len_ty)?;
- let value = entry.arg(0)?;
+ let (elem_type, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, elem_ty)?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
+ let array_start = entry.extract_value(context, location, array_value, len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, array_value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let has_enough_data = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ule,
+ extract_len_value,
+ array_len,
+ location,
+ ))?;
let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
+ let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
- is_empty,
- empty_block,
+ has_enough_data,
valid_block,
+ error_block,
&[],
&[],
location,
));
{
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ // Clone branch_values so that it doesn't interfere with the other branch.
+ let mut branch_values = branch_values.clone();
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
-
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
+ let value_size = valid_block.const_int(
context,
- valid_block,
location,
- target_ptr,
- "realloc returned nullptr",
+ elem_layout.pad_to_align().size() * extract_len,
+ 64,
)?;
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
+ let value_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context, value_ptr, value_size, location,
+ )?)?;
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_start = valid_block.addi(array_start, k1, location)?;
- let value = valid_block.insert_value(context, location, value, new_start, 1)?;
+ let array_ptr = valid_block.extract_value(context, location, array_value, ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
- }
+ let data_ptr = {
+ let offset_elems = if REVERSE {
+ valid_block.append_op_result(arith::subi(array_end, extract_len_value, location))?
+ } else {
+ array_start
+ };
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
- context,
- empty_block,
- location,
- &info.param_signatures()[0].ty,
- value,
- )?;
- empty_block.append_operation(helper.br(1, &[], location));
-
- Ok(())
-}
-
-/// Generate MLIR operations for the `array_snapshot_pop_front` libfunc.
-pub fn build_snapshot_pop_front<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- build_pop_front(context, registry, entry, location, helper, metadata, info)
-}
+ let offset = valid_block.append_op_result(arith::extui(
+ offset_elems,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
+ let offset =
+ valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
-/// Generate MLIR operations for the `array_snapshot_pop_back` libfunc.
-pub fn build_snapshot_pop_back<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?
+ };
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let new_array_ptr = valid_block.append_op_result(scf::r#if(
+ is_shared,
+ &[ptr_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let k0 = block.const_int(context, location, 0, 64)?;
+ let k1 = block.const_int_from_type(context, location, 1, len_ty)?;
+
+ let elem_stride =
+ block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(elem_ty) => {
+ block.append_operation(scf::r#for(
+ k0,
+ value_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ value_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_type)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, elem_ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, data_ptr, value_ptr, value_size),
+ }
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let array_ptr = {
+ let array_len_bytes =
+ block.append_op_result(arith::subi(array_len, k1, location))?;
+ let array_len_bytes = block.append_op_result(arith::extui(
+ array_len_bytes,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let array_len_bytes = block.append_op_result(arith::muli(
+ array_len_bytes,
+ elem_stride,
+ location,
+ ))?;
+ let array_len_bytes = block.append_op_result(arith::addi(
+ array_len_bytes,
+ block.const_int(
+ context,
+ location,
+ calc_refcount_offset(elem_layout),
+ 64,
+ )?,
+ location,
+ ))?;
+
+ let clone_ptr = block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let clone_ptr = block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ clone_ptr,
+ array_len_bytes,
+ location,
+ )?)?;
+ block.store(context, location, clone_ptr, k1)?;
+
+ let clone_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let data_ptr = if REVERSE {
+ data_ptr
+ } else {
+ let offset = block.append_op_result(arith::extui(
+ extract_len_value,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset =
+ block.append_op_result(arith::muli(offset, elem_stride, location))?;
- let value = entry.arg(0)?;
+ block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?
+ };
+
+ let others_len = block.append_op_result(arith::subi(
+ array_len,
+ extract_len_value,
+ location,
+ ))?;
+ let others_len = block.append_op_result(arith::extui(
+ others_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let others_size =
+ block.append_op_result(arith::muli(others_len, elem_stride, location))?;
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) => {
+ block.append_operation(scf::r#for(
+ k0,
+ others_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value =
+ block.load(context, location, source_ptr, elem_type)?;
+ let values = dup_overrides_meta.invoke_override(
+ context, &block, location, elem_ty, value,
+ )?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, data_ptr, clone_ptr, others_size),
+ }
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(context, &block, location, self_ty, array_value)?;
- let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
- context,
- is_empty,
- empty_block,
- valid_block,
- &[],
- &[],
- location,
- ));
+ clone_ptr
+ };
- {
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_end = valid_block.append_op_result(arith::subi(array_end, k1, location))?;
+ block.append_operation(scf::r#yield(&[array_ptr], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ block.memcpy(context, location, data_ptr, value_ptr, value_size);
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(new_end, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ block.append_operation(scf::r#yield(&[array_ptr], location));
+ region
+ },
location,
))?;
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
+ let array_value =
+ valid_block.insert_value(context, location, array_value, new_array_ptr, 0)?;
+
+ let has_realloc = valid_block.append_op_result(
+ ods::llvm::icmp(
+ context,
+ IntegerType::new(context, 1).into(),
+ array_ptr,
+ new_array_ptr,
+ IntegerAttribute::new(IntegerType::new(context, 64).into(), 1).into(),
+ location,
+ )
+ .into(),
)?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
+ let array_value = valid_block.append_op_result(scf::r#if(
+ has_realloc,
+ &[array_value.r#type()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let k0 = block.const_int_from_type(context, location, 0, len_ty)?;
+ let array_len =
+ block.append_op_result(arith::subi(array_len, extract_len_value, location))?;
+
+ let array_value = block.insert_value(context, location, array_value, k0, 1)?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 2)?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 3)?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let array_value = if REVERSE {
+ let array_end = block.append_op_result(arith::subi(
+ array_end,
+ extract_len_value,
+ location,
+ ))?;
+ block.insert_value(context, location, array_value, array_end, 2)?
+ } else {
+ let array_start = block.append_op_result(arith::addi(
+ array_start,
+ extract_len_value,
+ location,
+ ))?;
+ block.insert_value(context, location, array_value, array_start, 1)?
+ };
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
location,
- target_ptr,
- "realloc returned nullptr",
- )?;
+ ))?;
+
+ branch_values.push(array_value);
+ branch_values.push(value_ptr);
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
+ valid_block.append_operation(helper.br(0, &branch_values, location));
+ }
- let value = valid_block.insert_value(context, location, value, new_end, 2)?;
+ {
+ if CONSUME {
+ let self_ty = match info {
+ PopInfo::Single(info) => &info.signature.param_signatures[0].ty,
+ PopInfo::Multi(info) => &info.signature.param_signatures[1].ty,
+ };
+
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(context, error_block, location, self_ty, array_value)?;
+ } else {
+ branch_values.push(array_value);
+ }
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
+ error_block.append_operation(helper.br(1, &branch_values, location));
}
- empty_block.append_operation(helper.br(1, &[value], location));
Ok(())
}
-pub fn build_snapshot_multi_pop_front<'ctx, 'this>(
+/// Generate MLIR operations for the `array_get` libfunc.
+pub fn build_get<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
- info: &ConcreteMultiPopLibfunc,
+ info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = entry.arg(0)?;
-
- // Get type information
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let array_ty = registry.build_type(
+ // Build the type so that the drop impl invocation works properly.
+ registry.build_type(
context,
helper,
registry,
metadata,
- &info.param_signatures()[1].ty,
+ &info.signature.param_signatures[1].ty,
)?;
- let popped_cty = registry.get_type(&info.popped_ty)?;
- let popped_size = popped_cty.layout(registry)?.size();
- let popped_size_value = entry.const_int(context, location, popped_size, 64)?;
-
- let popped_ctys = popped_cty
- .fields()
- .expect("popped type should be a tuple (ergo, has fields)");
- let popped_len = popped_ctys.len();
-
- let array_ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let array_start_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_end_ty = crate::ffi::get_struct_field_type_at(&array_ty, 2);
+ let range_check =
+ super::increment_builtin_counter(context, entry, location, entry.argument(0)?.into())?;
- // Get array information
+ let array_start =
+ entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 2)?;
- let array = entry.arg(1)?;
- let array_ptr = entry.extract_value(context, location, array, array_ptr_ty, 0)?;
- let array_start = entry.extract_value(context, location, array, array_start_ty, 1)?;
- let array_end = entry.extract_value(context, location, array, array_end_ty, 2)?;
-
- // Check if operation is valid:
- // if array.end - array.start < popped_len {
- // return
- // }
-
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let popped_len_value = entry.const_int(context, location, popped_len, 32)?;
- let is_valid = entry.cmpi(
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let is_valid = entry.append_op_result(arith::cmpi(
context,
- CmpiPredicate::Uge,
+ CmpiPredicate::Ult,
+ entry.argument(2)?.into(),
array_len,
- popped_len_value,
location,
- )?;
+ ))?;
let valid_block = helper.append_block(Block::new(&[]));
- let invalid_block = helper.append_block(Block::new(&[]));
-
+ let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
is_valid,
valid_block,
- invalid_block,
+ error_block,
&[],
&[],
location,
));
{
- // Get pointer to first element to pop
-
- let popped_ptr = {
- let single_popped_ty =
- registry.build_type(context, helper, registry, metadata, &popped_ctys[0])?;
-
- valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- array_ptr,
- &[array_start],
- single_popped_ty,
- llvm::r#type::pointer(context, 0),
- location,
- ))?
- };
-
- // Allocate memory for return array
-
- let return_ptr = {
- let null_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- null_ptr,
- popped_size_value,
- location,
- )?)?
- };
-
- valid_block.memcpy(context, location, popped_ptr, return_ptr, popped_size_value);
-
- // Update array start (removing popped elements)
-
- let array = {
- let new_array_start = valid_block.addi(array_start, popped_len_value, location)?;
-
- valid_block.insert_value(context, location, array, new_array_start, 1)?
- };
-
- valid_block.append_operation(helper.br(0, &[range_check, array, return_ptr], location));
- }
-
- invalid_block.append_operation(helper.br(1, &[range_check, array], location));
-
- Ok(())
-}
-
-pub fn build_snapshot_multi_pop_back<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &ConcreteMultiPopLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = entry.arg(0)?;
-
- // Get type information
-
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[1].ty,
- )?;
-
- let popped_cty = registry.get_type(&info.popped_ty)?;
- let popped_size = popped_cty.layout(registry)?.size();
- let popped_size_value = entry.const_int(context, location, popped_size, 64)?;
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let popped_ctys = popped_cty
- .fields()
- .expect("popped type should be a tuple (ergo, has fields)");
- let popped_len = popped_ctys.len();
+ let value_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ value_ptr,
+ elem_stride,
+ location,
+ )?)?;
- let array_ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let array_start_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_end_ty = crate::ffi::get_struct_field_type_at(&array_ty, 2);
+ let array_ptr =
+ valid_block.extract_value(context, location, entry.argument(1)?.into(), ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- // Get array information
+ let offset = valid_block.append_op_result(arith::addi(
+ array_start,
+ entry.argument(2)?.into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::extui(
+ offset,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
- let array = entry.arg(1)?;
- let array_ptr = entry.extract_value(context, location, array, array_ptr_ty, 0)?;
- let array_start = entry.extract_value(context, location, array, array_start_ty, 1)?;
- let array_end = entry.extract_value(context, location, array, array_end_ty, 2)?;
+ let source_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- // Check if operation is valid:
- // if array.end - array.start < popped_len {
- // return
- // }
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, value_ptr, values.1)?;
+ }
+ _ => block.memcpy(context, location, source_ptr, value_ptr, elem_stride),
+ }
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let popped_len_value = entry.const_int(context, location, popped_len, 32)?;
- let is_valid = entry.cmpi(
- context,
- CmpiPredicate::Uge,
- array_len,
- popped_len_value,
- location,
- )?;
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.memcpy(context, location, source_ptr, value_ptr, elem_stride);
+
+ match metadata.get::<DropOverridesMeta>() {
+ Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
+ let drop_loop = |o0, o1| {
+ block.append_operation(scf::r#for(
+ o0,
+ o1,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let value_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(block.argument(0)?.into())],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let value =
+ block.load(context, location, value_ptr, elem_ty)?;
+ drop_overrides_meta.invoke_override(
+ context, &block, location, &info.ty, value,
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let valid_block = helper.append_block(Block::new(&[]));
- let invalid_block = helper.append_block(Block::new(&[]));
+ Result::Ok(())
+ };
- entry.append_operation(cf::cond_br(
- context,
- is_valid,
- valid_block,
- invalid_block,
- &[],
- &[],
- location,
- ));
+ let o0 = block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::addi(
+ array_start,
+ entry.argument(2)?.into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::extui(
+ o1,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o0 = block.append_op_result(arith::muli(o0, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
- {
- // Get pointer to first element to pop
+ let o0 = block.append_op_result(arith::addi(o1, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+ }
+ _ => {}
+ }
- let popped_ptr = {
- let single_popped_ty =
- registry.build_type(context, helper, registry, metadata, &popped_ctys[0])?;
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let popped_start =
- valid_block.append_op_result(arith::subi(array_end, popped_len_value, location))?;
+ valid_block.append_operation(helper.br(0, &[range_check, value_ptr], location));
+ }
- valid_block.append_op_result(llvm::get_element_ptr_dynamic(
+ {
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
context,
- array_ptr,
- &[popped_start],
- single_popped_ty,
- llvm::r#type::pointer(context, 0),
+ error_block,
location,
- ))?
- };
-
- // Allocate memory for return array
-
- let return_ptr = {
- let null_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
)?;
- valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- null_ptr,
- popped_size_value,
- location,
- )?)?
- };
-
- valid_block.memcpy(context, location, popped_ptr, return_ptr, popped_size_value);
- // Update array end (removing popped elements)
-
- let array = {
- let new_array_end =
- valid_block.append_op_result(arith::subi(array_end, popped_len_value, location))?;
-
- valid_block.insert_value(context, location, array, new_array_end, 2)?
- };
-
- valid_block.append_operation(helper.br(0, &[range_check, array, return_ptr], location));
+ error_block.append_operation(helper.br(1, &[range_check], location));
}
- invalid_block.append_operation(helper.br(1, &[range_check, array], location));
-
Ok(())
}
@@ -3613,39 +4498,61 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- let range_check = super::increment_builtin_counter(context, entry, location, entry.arg(0)?)?;
+ // Signature:
+ // Params: RangeCheck, Snapshot<Array<felt252>>, u32, u32
+ // Branches:
+ // 0: RangeCheck, Snapshot<Array<felt252>>
+ // 1: RangeCheck
+ let ptr_ty = llvm::r#type::pointer(context, 0);
let len_ty = IntegerType::new(context, 32).into();
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let self_ty = registry.build_type(
+ context,
+ helper,
+ registry,
+ metadata,
+ &info.signature.param_signatures[1].ty,
+ )?;
+
+ let range_check =
+ super::increment_builtin_counter(context, entry, location, entry.argument(0)?.into())?;
- let array_start = entry.extract_value(context, location, entry.arg(1)?, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, entry.arg(1)?, len_ty, 2)?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
+ let k1 = entry.const_int_from_type(context, location, 1, len_ty)?;
+
+ let array_start =
+ entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 2)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let slice_start = entry.arg(2)?;
- let slice_len = entry.arg(3)?;
- let slice_end = entry.addi(slice_start, slice_len, location)?;
+ let slice_start = entry.argument(2)?.into();
+ let slice_len = entry.argument(3)?.into();
+ let slice_end = entry.append_op_result(arith::addi(slice_start, slice_len, location))?;
- let slice_start = entry.addi(array_start, slice_start, location)?;
- let slice_end = entry.addi(array_start, slice_end, location)?;
- let lhs_bound = entry.cmpi(
+ let slice_lhs_bound = entry.append_op_result(arith::cmpi(
context,
- CmpiPredicate::Uge,
+ CmpiPredicate::Ule,
slice_start,
- array_start,
+ array_len,
location,
- )?;
- let rhs_bound = entry.cmpi(context, CmpiPredicate::Ule, slice_end, array_end, location)?;
-
- let is_valid = entry.append_op_result(arith::andi(lhs_bound, rhs_bound, location))?;
+ ))?;
+ let slice_rhs_bound = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ule,
+ slice_end,
+ array_len,
+ location,
+ ))?;
+ let slice_bounds =
+ entry.append_op_result(arith::andi(slice_lhs_bound, slice_rhs_bound, location))?;
- let slice_block = helper.append_block(Block::new(&[]));
+ let valid_block = helper.append_block(Block::new(&[]));
let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
- is_valid,
- slice_block,
+ slice_bounds,
+ valid_block,
error_block,
&[],
&[],
@@ -3653,89 +4560,229 @@
));
{
- let elem_ty = elem_ty.build(context, helper, registry, metadata, &info.ty)?;
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let value = entry.arg(1)?;
- let value = slice_block.insert_value(context, location, value, slice_start, 1)?;
- let value = slice_block.insert_value(context, location, value, slice_end, 2)?;
+ let slice_size = valid_block.append_op_result(arith::extui(
+ slice_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let slice_size =
+ valid_block.append_op_result(arith::muli(elem_stride, slice_size, location))?;
+ let slice_size_with_offset = valid_block.append_op_result(arith::addi(
+ slice_size,
+ valid_block.const_int(context, location, calc_refcount_offset(elem_layout), 64)?,
+ location,
+ ))?;
- let elem_stride =
- slice_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let prepare = |value| {
- let value = slice_block.extui(value, IntegerType::new(context, 64).into(), location)?;
- slice_block.muli(value, elem_stride, location)
- };
+ let slice_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let slice_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ slice_ptr,
+ slice_size_with_offset,
+ location,
+ )?)?;
+ valid_block.store(context, location, slice_ptr, k1)?;
- let ptr = slice_block.extract_value(
+ let slice_ptr = valid_block.gep(
context,
location,
- entry.arg(1)?,
- llvm::r#type::pointer(context, 0),
- 0,
+ slice_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
)?;
- let make_region = |drop_overrides_meta: &DropOverridesMeta| {
- let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
- let value_ptr = block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[block.arg(0)?],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ let array_ptr =
+ valid_block.extract_value(context, location, entry.argument(1)?.into(), ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- let value = block.load(context, location, value_ptr, elem_ty)?;
- drop_overrides_meta.invoke_override(context, &block, location, &info.ty, value)?;
+ let offset =
+ valid_block.append_op_result(arith::addi(array_start, slice_start, location))?;
+ let offset = valid_block.append_op_result(arith::extui(
+ offset,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
- block.append_operation(scf::r#yield(&[], location));
- Result::Ok(region)
- };
+ let source_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- let array_start = prepare(array_start)?;
- let array_end = prepare(array_end)?;
- let slice_start = prepare(slice_start)?;
- let slice_end = prepare(slice_end)?;
-
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
- slice_block.append_operation(scf::r#for(
- array_start,
- slice_start,
- elem_stride,
- make_region(drop_overrides_meta)?,
- location,
- ));
- slice_block.append_operation(scf::r#for(
- slice_end,
- array_end,
- elem_stride,
- make_region(drop_overrides_meta)?,
- location,
- ));
- }
- _ => {}
- };
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let k0 = valid_block.const_int(context, location, 0, 64)?;
+ valid_block.append_operation(scf::r#for(
+ k0,
+ slice_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ source_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ slice_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
- slice_block.append_operation(helper.br(0, &[range_check, value], location));
- }
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, source_ptr, slice_ptr, slice_size),
+ }
- {
- registry.build_type(
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.memcpy(context, location, source_ptr, slice_ptr, slice_size);
+
+ match metadata.get::<DropOverridesMeta>() {
+ Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
+ let drop_loop = |o0, o1| {
+ block.append_operation(scf::r#for(
+ o0,
+ o1,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let value_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(block.argument(0)?.into())],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let value =
+ block.load(context, location, value_ptr, elem_ty)?;
+ drop_overrides_meta.invoke_override(
+ context, &block, location, &info.ty, value,
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+
+ Result::Ok(())
+ };
+
+ let o0 = block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::addi(
+ array_start,
+ slice_start,
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::extui(
+ o1,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o0 = block.append_op_result(arith::muli(o0, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+
+ let o0 = block.append_op_result(arith::addi(o1, slice_size, location))?;
+ let o1 = block.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+ }
+ _ => {}
+ }
+
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+
+ let slice_value = valid_block.append_op_result(llvm::undef(self_ty, location))?;
+ let slice_value = valid_block.insert_values(
context,
- helper,
- registry,
- metadata,
- &info.signature.param_signatures[1].ty,
+ location,
+ slice_value,
+ &[slice_ptr, k0, slice_len, slice_len],
)?;
- // The metadata get will never fail because an array always has a drop implementation,
- // which at this point is always inserted thanks to the `build_type()` just above.
- metadata
+ valid_block.append_operation(helper.br(0, &[range_check, slice_value], location));
+ }
+
+ {
+ metadata
.get::<DropOverridesMeta>()
.ok_or(Error::MissingMetadata)?
.invoke_override(
@@ -3743,7 +4790,7 @@
error_block,
location,
&info.signature.param_signatures[1].ty,
- entry.arg(1)?,
+ entry.argument(1)?.into(),
)?;
error_block.append_operation(helper.br(1, &[range_check], location));
@@ -3752,309 +4799,137 @@
Ok(())
}
-/// Generate MLIR operations for the `span_from_tuple` libfunc.
-pub fn build_span_from_tuple<'ctx, 'this>(
+/// Generate MLIR operations for the `array_len` libfunc.
+pub fn build_len<'ctx, 'this>(
context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ _registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- // tuple to array span (t,t,t) -> &[t,t,t]
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let struct_type_info = registry.get_type(&info.ty)?;
-
- let struct_ty = registry.build_type(context, helper, registry, metadata, &info.ty)?;
-
- let container: Value = {
- // load box
- entry.load(context, location, entry.arg(0)?, struct_ty)?
- };
- // TODO: Maybe reuse the pointer?
- entry.append_operation(ReallocBindingsMeta::free(context, entry.arg(0)?, location)?);
-
- let fields = struct_type_info.fields().expect("should have fields");
- let (field_ty, field_layout) =
- registry.build_type_with_layout(context, helper, registry, metadata, &fields[0])?;
- let field_stride = field_layout.pad_to_align().size();
-
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.branch_signatures()[0].vars[0].ty,
- )?;
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
-
- let array_len_value = entry.const_int_from_type(context, location, fields.len(), len_ty)?;
-
- let array_container = entry.append_op_result(llvm::undef(array_ty, location))?;
-
- let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
-
- let array_container = entry.insert_value(context, location, array_container, k0, 1)?;
- let array_container =
- entry.insert_value(context, location, array_container, array_len_value, 2)?;
- let array_container =
- entry.insert_value(context, location, array_container, array_len_value, 3)?;
-
- let ptr = entry
- .append_op_result(ods::llvm::mlir_zero(context, pointer(context, 0), location).into())?;
-
- let field_size: Value = entry.const_int(context, location, field_stride, 64)?;
- let array_len_value_i64 = entry.extui(array_len_value, field_size.r#type(), location)?;
- let total_size = entry.muli(field_size, array_len_value_i64, location)?;
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr = entry.append_op_result(ReallocBindingsMeta::realloc(
- context, ptr, total_size, location,
- )?)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
- for (i, _) in fields.iter().enumerate() {
- let value: Value = entry.extract_value(context, location, container, field_ty, i)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let target_ptr = entry.append_op_result(llvm::get_element_ptr(
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
context,
- ptr,
- DenseI32ArrayAttribute::new(context, &[i as i32]),
- field_ty,
- pointer(context, 0),
+ entry,
location,
- ))?;
-
- entry.store(context, location, target_ptr, value)?;
- }
-
- let array_container = entry.insert_value(context, location, array_container, ptr, 0)?;
-
- entry.append_operation(helper.br(0, &[array_container], location));
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
+ entry.append_operation(helper.br(0, &[array_len], location));
Ok(())
}
-fn assert_nonnull<'ctx, 'this>(
+fn calc_refcount_offset(layout: Layout) -> usize {
+ get_integer_layout(32)
+ .align_to(layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size()
+}
+
+fn is_shared<'ctx, 'this>(
context: &'ctx Context,
- entry: &'this Block<'ctx>,
+ block: &'this Block<'ctx>,
location: Location<'ctx>,
- ptr: Value<'ctx, 'this>,
- msg: &str,
-) -> Result<()> {
- let null_ptr =
- entry.append_op_result(ods::llvm::mlir_zero(context, ptr.r#type(), location).into())?;
-
- let ptr_is_not_null = entry.append_op_result(
- ods::llvm::icmp(
+ array_ptr: Value<'ctx, 'this>,
+ elem_layout: Layout,
+) -> Result<Value<'ctx, 'this>> {
+ let k0 = block.const_int(context, location, 0, 64)?;
+ let ptr_as_int = block.append_op_result(
+ ods::llvm::ptrtoint(
context,
- IntegerType::new(context, 1).into(),
- ptr,
- null_ptr,
- IntegerAttribute::new(IntegerType::new(context, 64).into(), 1).into(),
+ IntegerType::new(context, 64).into(),
+ array_ptr,
location,
)
.into(),
)?;
-
- entry.append_operation(cf::assert(context, ptr_is_not_null, msg, location));
- Ok(())
-}
-
-pub fn build_tuple_from_span<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- // Tasks:
- // - Check if sizes match.
- // - If they do not match, jump to branch [1].
- // - If they do match:
- // - If start == 0 && capacity == len -> reuse the pointer
- // - Otherwise, realloc + memcpy + free.
-
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let array_ty = registry.get_type(&info.signature.param_signatures[0].ty)?;
- let (elem_id, elem_ty) = match array_ty {
- CoreTypeConcrete::Array(info) => (&info.ty, registry.get_type(&info.ty)?),
- CoreTypeConcrete::Snapshot(info) => match registry.get_type(&info.ty)? {
- CoreTypeConcrete::Array(info) => (&info.ty, registry.get_type(&info.ty)?),
- _ => native_panic!(
- "matched an unexpected CoreTypeConcrete that is not a Array or Snapshot"
- ),
- },
- _ => {
- native_panic!("matched an unexpected CoreTypeConcrete that is not a Array or Snapshot")
- }
- };
- let elem_layout = elem_ty.layout(registry)?;
-
- let array_start = entry.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 1,
- )?;
- let array_end = entry.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 2,
- )?;
-
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let (tuple_len, tuple_len_val) = {
- let fields = registry
- .get_type(&info.ty)?
- .fields()
- .to_native_assert_error("missing field")?;
-
- native_assert!(
- fields.iter().all(|f| f.id == elem_id.id),
- "all the elements of the array must have the same type"
- );
-
- (
- entry.const_int(context, location, fields.len(), 32)?,
- fields.len(),
- )
- };
-
- let len_matches = entry.cmpi(context, CmpiPredicate::Eq, array_len, tuple_len, location)?;
-
- let block_ok = helper.append_block(Block::new(&[]));
- let block_err = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let ptr_is_null = block.append_op_result(arith::cmpi(
context,
- len_matches,
- block_ok,
- block_err,
- &[],
- &[],
+ CmpiPredicate::Eq,
+ ptr_as_int,
+ k0,
location,
- ));
-
- {
- let k0 = block_ok.const_int(context, location, 0, 32)?;
- let starts_at_zero =
- block_ok.cmpi(context, CmpiPredicate::Eq, array_start, k0, location)?;
-
- let array_cap = block_ok.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 3,
- )?;
- let capacity_matches =
- block_ok.cmpi(context, CmpiPredicate::Eq, array_cap, tuple_len, location)?;
+ ))?;
- let array_ptr = block_ok.extract_value(
- context,
- location,
- entry.arg(0)?,
- llvm::r#type::pointer(context, 0),
- 0,
- )?;
- let should_forward_pointer =
- block_ok.append_op_result(arith::andi(starts_at_zero, capacity_matches, location))?;
+ let is_shared = block.append_op_result(scf::r#if(
+ ptr_is_null,
+ &[IntegerType::new(context, 1).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let block_clone = helper.append_block(Block::new(&[]));
- let block_forward = helper.append_block(Block::new(&[]));
- block_ok.append_operation(cf::cond_br(
- context,
- should_forward_pointer,
- block_forward,
- block_clone,
- &[],
- &[],
- location,
- ));
+ let k0 = block.const_int(context, location, 0, 1)?;
+ block.append_operation(scf::r#yield(&[k0], location));
+ region
+ },
{
- let elem_stride =
- block_clone.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let tuple_len =
- block_clone.extui(tuple_len, IntegerType::new(context, 64).into(), location)?;
- let tuple_len = block_clone.muli(tuple_len, elem_stride, location)?;
-
- let box_ptr = block_clone
- .append_op_result(llvm::zero(llvm::r#type::pointer(context, 0), location))?;
- let box_ptr = block_clone.append_op_result(ReallocBindingsMeta::realloc(
- context, box_ptr, tuple_len, location,
- )?)?;
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let elem_offset =
- block_clone.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = block_clone.muli(elem_offset, elem_stride, location)?;
- let elem_ptr = block_clone.append_op_result(llvm::get_element_ptr_dynamic(
+ let array_ptr = block.gep(
context,
+ location,
array_ptr,
- &[elem_offset],
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ )?;
+ let ref_count = block.load(
+ context,
location,
- ))?;
+ array_ptr,
+ IntegerType::new(context, 32).into(),
+ )?;
- block_clone.append_operation(
- ods::llvm::intr_memcpy_inline(
+ #[cfg(debug_assertions)]
+ {
+ let k0 = block.const_int(context, location, 0, 32)?;
+ let is_nonzero = block.append_op_result(arith::cmpi(
context,
- box_ptr,
- elem_ptr,
- IntegerAttribute::new(
- IntegerType::new(context, 64).into(),
- (tuple_len_val * elem_layout.pad_to_align().size()) as i64,
- ),
- IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
+ CmpiPredicate::Ne,
+ ref_count,
+ k0,
location,
- )
- .into(),
- );
-
- block_clone.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
- block_clone.append_operation(helper.br(0, &[box_ptr], location));
- }
+ ))?;
- block_forward.append_operation(helper.br(0, &[array_ptr], location));
- }
-
- {
- registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.signature.param_signatures[0].ty,
- )?;
+ block.append_operation(cf::assert(
+ context,
+ is_nonzero,
+ "ref_count must not be zero",
+ location,
+ ));
+ }
- // The metadata get will never fail because an array always has a drop implementation,
- // which at this point is always inserted thanks to the `build_type()` just above.
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
+ let k1 = block.const_int(context, location, 1, 32)?;
+ let is_shared = block.append_op_result(arith::cmpi(
context,
- block_err,
+ CmpiPredicate::Ne,
+ ref_count,
+ k1,
location,
- &info.signature.param_signatures[0].ty,
- entry.arg(0)?,
- )?;
+ ))?;
- block_err.append_operation(helper.br(1, &[], location));
- }
+ block.append_operation(scf::r#yield(&[is_shared], location));
+ region
+ },
+ location,
+ ))?;
- Ok(())
+ Ok(is_shared)
}
#[cfg(test)]
@@ -4365,7 +5240,6 @@
//data.append(5_u32);
*slice.get(0).unwrap().unbox()
}
-
);
let result = run_program(&program, "run_test", &[]).return_value;
diff --git a/src/cairo_native/metadata/debug_utils.rs.html b/src/cairo_native/metadata/debug_utils.rs.html
index ca4f3df8a..343e1c931 100644
--- a/src/cairo_native/metadata/debug_utils.rs.html
+++ b/src/cairo_native/metadata/debug_utils.rs.html
@@ -1563,7 +1563,7 @@
unsafe extern "C" fn dump_mem_impl(ptr: *const (), len: u64) {
println!("[DEBUG] Memory dump at {ptr:?}:");
for chunk in (0..len).step_by(8) {
- print!(" {ptr:?}:");
+ print!(" {:?}:", ptr.byte_add(chunk as usize));
for offset in chunk..chunk + 8 {
print!(" {:02x}", ptr.byte_add(offset as usize).cast::<u8>().read());
}
diff --git a/src/cairo_native/starknet.rs.html b/src/cairo_native/starknet.rs.html
index 4725ec488..b936c8a27 100644
--- a/src/cairo_native/starknet.rs.html
+++ b/src/cairo_native/starknet.rs.html
@@ -1703,6 +1703,33 @@
1703
1704
1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
//! Starknet related code for `cairo_native`
use serde::{Deserialize, Serialize};
@@ -2245,12 +2272,11 @@
// TODO: Move to the correct place or remove if unused.
pub(crate) mod handler {
use super::*;
- use crate::utils::{libc_free, libc_malloc};
+ use crate::utils::{get_integer_layout, libc_free, libc_malloc};
use std::{
alloc::Layout,
- ffi::c_void,
fmt::Debug,
- mem::{size_of, ManuallyDrop, MaybeUninit},
+ mem::{self, size_of, ManuallyDrop, MaybeUninit},
ptr::{null_mut, NonNull},
};
@@ -2614,7 +2640,17 @@
capacity: 0,
},
_ => {
- let ptr = libc_malloc(Layout::array::<E>(data.len()).unwrap().size()) as *mut E;
+ let refcount_offset = get_integer_layout(32)
+ .align_to(mem::align_of::<E>())
+ .unwrap()
+ .pad_to_align()
+ .size();
+ let ptr = libc_malloc(
+ Layout::array::<E>(data.len()).unwrap().size() + refcount_offset,
+ ) as *mut E;
+
+ ptr.cast::<u32>().write(1);
+ let ptr = ptr.byte_add(refcount_offset);
let len: u32 = data.len().try_into().unwrap();
for (i, val) in data.iter().enumerate() {
@@ -2631,6 +2667,24 @@
}
}
+ unsafe fn drop_mlir_array<E>(data: &ArrayAbi<E>) {
+ if data.ptr.is_null() {
+ return;
+ }
+
+ let refcount_offset = get_integer_layout(32)
+ .align_to(mem::align_of::<E>())
+ .unwrap()
+ .pad_to_align()
+ .size();
+
+ let ptr = data.ptr.byte_sub(refcount_offset);
+ match ptr.cast::<u32>().read() {
+ 1 => libc_free(ptr.cast()),
+ n => ptr.cast::<u32>().write(n - 1),
+ }
+ }
+
fn wrap_error<E>(e: &[Felt]) -> SyscallResultAbi<E> {
SyscallResultAbi {
err: ManuallyDrop::new(SyscallResultAbiErr {
@@ -2673,7 +2727,7 @@
let input_vec: Vec<_> = input.into();
unsafe {
- libc_free(input.ptr as *mut c_void);
+ Self::drop_mlir_array(input);
}
let result = ptr
@@ -2860,7 +2914,7 @@
let calldata_vec: Vec<_> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.deploy(
@@ -2920,7 +2974,7 @@
let calldata_vec: Vec<Felt> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.library_call(class_hash, function_selector, &calldata_vec, gas);
@@ -2954,7 +3008,7 @@
let calldata_vec: Vec<Felt> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.call_contract(address, entry_point_selector, &calldata_vec, gas);
@@ -3028,13 +3082,13 @@
let keys_vec: Vec<_> = keys.into();
unsafe {
- libc_free(keys.ptr as *mut c_void);
+ Self::drop_mlir_array(keys);
}
let data_vec: Vec<_> = data.into();
unsafe {
- libc_free(data.ptr as *mut c_void);
+ Self::drop_mlir_array(data);
}
let result = ptr.emit_event(&keys_vec, &data_vec, gas);
@@ -3061,7 +3115,7 @@
let payload_vec: Vec<_> = payload.into();
unsafe {
- libc_free(payload.ptr as *mut c_void);
+ Self::drop_mlir_array(payload);
}
let result = ptr.send_message_to_l1(to_address, &payload_vec, gas);
@@ -3096,7 +3150,7 @@
let result = ptr.keccak(input_vec, gas);
unsafe {
- libc_free(input.ptr as *mut c_void);
+ Self::drop_mlir_array(input);
}
*result_ptr = match result {
diff --git a/src/cairo_native/types.rs.html b/src/cairo_native/types.rs.html
index b080dc46b..87b16786e 100644
--- a/src/cairo_native/types.rs.html
+++ b/src/cairo_native/types.rs.html
@@ -1011,16 +1011,6 @@
1011
1012
1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
Constant cairo_native::starknet::SYSCALL_HANDLER_VTABLE
source · pub const SYSCALL_HANDLER_VTABLE: LocalKey<Cell<*mut ()>>;
Constant cairo_native::starknet::SYSCALL_HANDLER_VTABLE
source · pub const SYSCALL_HANDLER_VTABLE: LocalKey<Cell<*mut ()>>;
Function cairo_native::starknet::cairo_native__vtable_cheatcode
source · pub extern "C" fn cairo_native__vtable_cheatcode(
+cairo_native__vtable_cheatcode in cairo_native::starknet - Rust Function cairo_native::starknet::cairo_native__vtable_cheatcode
source · pub extern "C" fn cairo_native__vtable_cheatcode(
result_ptr: &mut ArrayAbi<Felt252Abi>,
selector: &Felt252Abi,
input: &ArrayAbi<Felt252Abi>,
diff --git a/cairo_native/starknet/index.html b/cairo_native/starknet/index.html
index 494cb1417..81181e74c 100644
--- a/cairo_native/starknet/index.html
+++ b/cairo_native/starknet/index.html
@@ -1,2 +1,2 @@
-cairo_native::starknet - Rust Module cairo_native::starknet
source · Expand description
Starknet related code for cairo_native
+cairo_native::starknet - Rust
\ No newline at end of file
diff --git a/help.html b/help.html
index d6fdaa571..a6bb2beac 100644
--- a/help.html
+++ b/help.html
@@ -1 +1 @@
-Help Rustdoc help
Back
\ No newline at end of file
+Help Rustdoc help
Back
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
index 82f7c8c85..46d0914ef 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["cairo_native",{"t":"PPPPPPPPPPPPPPGPPPPPPPPPPPPPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNHNNCNNCNNNNNNNNCNNNNNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHQQHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCNNNNNNNNNNNNNNNNCNNNNNNNNNNOOOOOOOOOOOPEPEGCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHCCCCCCCCPPPPPGPPPGPPPPPPPPPPPPPPPPPPPPIPPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNFFFNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNOONNNOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNCNNNNNNNNNNNNNNNNNNNCNNNNNCCCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNCNNNNNNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNNNMNOOOMNMNNNNNNNNNNNNNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNFFFNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHNNNNNNNNNNNNNNNNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNFJFJSNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNOHNNHHNNNNNNNNNNONNNNNHHHNNHHHNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNNNNHNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNH","n":["Aggressive","Array","BoundedInt","Bytes31","Default","EcPoint","EcState","Enum","Felt252","Felt252Dict","IntRange","Less","None","Null","OptLevel","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","Value","__clone_box","","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","clone","","clone_into","","clone_to_uninit","","cmp","compare","compile","conceal","","context","cyan","","debug","default","deref","","deref_mut","","deserialize","dim","","docs","drop","","eq","","equivalent","","","","","","","","error","execution_result","executor","fg","","fixed","","fmt","","from","","","","","","","","","","","","","","","","","","green","","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","metadata","module","module_to_object","native_assert","native_panic","object_to_shared_lib","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","partial_cmp","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","serialize","starknet","starknet_stub","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","utils","vzip","","whenever","","white","","wrap","","yellow","","debug_name","","","fields","range","tag","value","","","x","y","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","","","green","init","internal_rewrite","","","","","","","into","invert","italic","jit","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AotProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","JitProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","context","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeContext","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile","conceal","context","cyan","default","deref","deref_mut","dim","drop","eq","equivalent","","","","fg","fixed","fmt","from","green","init","initialize_mlir","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","libfunc_to_name","section01","section02","section03","section04","section05","section06","section07","section08","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","IntegerConversion","IntegerLikeTypeExpected","IoError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","LibraryLoadError","LinkError","MissingBuiltinCostsSymbol","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","NativeAssert","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SelectorNotFound","SerdeJsonError","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","fg","","","fixed","","","fmt","","","","","","from","","","","","","","","","","","","","","","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","make_missing_parameter","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","panic","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","source","strike","","","to_smolstr","","","to_string","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","range","value","ranges","NativeAssertError","ToNativeAssertError","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","to_native_assert_error","to_smolstr","to_string","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","","","attr","","","bg","","","bitwise","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","builtin_stats","circuit_add","circuit_mul","clear","","","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize","","","dim","","","drop","","","ec_op","eq","","","equivalent","","","","","","","","","","","","error_msg","failure_flag","fg","","","fixed","","","fmt","","","from","","","from_execution_result","green","","","hash","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","partial_cmp","","pedersen","poseidon","primary","","","quirk","","","range_check","range_check_96","rapid_blink","","","red","","","remaining_gas","","resetting","","","return_value","return_values","rgb","","","segment_arena","serialize","","","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","AotContractExecutor","AotNativeExecutor","JitNativeExecutor","__clone_box","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","clone_into","clone_to_uninit","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","","fg","","","find_function_ptr","","","find_symbol_ptr","","","fixed","","","fmt","","","from","","","from_native_module","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","invoke_contract_dynamic","","invoke_dynamic","","invoke_dynamic_with_syscall_handler","","italic","","","linger","","","load","magenta","","","mask","","","module","new","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","program_registry","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run","save","strike","","","to_owned","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","MetadataStorage","attr","auto_breakpoint","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_utils","default","deref","deref_mut","dim","drop","drop_overrides","dup_overrides","enum_snapshot_variants","fg","fixed","fmt","from","gas","get","get_mut","get_or_insert_with","green","init","insert","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc_bindings","red","remove","resetting","rgb","runtime_bindings","strike","tail_recursion","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","","add_event","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","cyan","","default","deref","","deref_mut","","dim","","drop","","eq","equivalent","","","","fg","","fixed","","fmt","","from","","green","","has_event","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","maybe_breakpoint","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","type_id","variant_idx","DebugUtils","attr","bg","black","blink","blue","bold","borrow","borrow_mut","breakpoint_marker","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_breakpoint_trap","debug_print","default","deref","deref_mut","dim","drop","dump_mem","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","quirk","rapid_blink","red","register_impls","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DropOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DupOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","EnumSnapshotVariantsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","from","get_variants","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","set_mapping","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","","","ap_change_info","attr","","","","bg","","","","black","","","","blink","","","","blue","","","","bold","","","","borrow","","","","borrow_mut","","","","bright","","","","bright_black","","","","bright_blue","","","","bright_cyan","","","","bright_green","","","","bright_magenta","","","","bright_red","","","","bright_white","","","","bright_yellow","","","","clear","","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","","cyan","","","","default","","deref","","","","deref_mut","","","","dim","","","","drop","","","","eq","","","equivalent","","","","","","","","","","","","fg","","","","fixed","","","","fmt","","","","","from","","","","","","function_set_costs","gas_info","get_gas_cost_for_statement_and_cost_token_type","get_gas_costs_for_statement","get_initial_available_gas","green","","","","hash","init","","","","initial_required_gas","initial_required_gas_for_entry_points","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","invert","","","","italic","","","","linear_ap_change_solver","linear_gas_solver","linger","","","","magenta","","","","mask","","","","new","on_black","","","","on_blue","","","","on_bright","","","","on_bright_black","","","","on_bright_blue","","","","on_bright_cyan","","","","on_bright_green","","","","on_bright_magenta","","","","on_bright_red","","","","on_bright_white","","","","on_bright_yellow","","","","on_cyan","","","","on_fixed","","","","on_green","","","","on_magenta","","","","on_primary","","","","on_red","","","","on_rgb","","","","on_white","","","","on_yellow","","","","primary","","","","quirk","","","","rapid_blink","","","","red","","","","resetting","","","","rgb","","","","source","strike","","","","to_owned","","","to_smolstr","to_string","try_from","","","","try_into","","","","type_id","","","","underline","","","","upcast","","","","upcast_mut","","","","vzip","","","","whenever","","","","white","","","","wrap","","","","yellow","","","","gas","ReallocBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","free","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","RuntimeBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dict_drop","dict_dup","dict_gas_refund","dict_get","dict_insert","dict_new","dim","drop","fg","fixed","fmt","from","get_gas_builtin","green","init","internal_rewrite","","","","","","","into","invert","italic","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_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vtable_cheatcode","vzip","whenever","white","wrap","yellow","TailRecursionMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","depth_counter","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","recursion_target","red","resetting","return_target","rgb","set_return_target","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeModule","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get_metadata","green","init","insert_metadata","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","metadata","module","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","program_registry","quirk","rapid_blink","red","remove_metadata","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","","","","","","","","","","account_contract_address","","account_deployment_data","attr","","","","","","","","","","","","bg","","","","","","","","","","","","black","","","","","","","","","","","","blink","","","","","","","","","","","","block_info","","block_number","block_timestamp","blue","","","","","","","","","","","","bold","","","","","","","","","","","","borrow","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","bright","","","","","","","","","","","","bright_black","","","","","","","","","","","","bright_blue","","","","","","","","","","","","bright_cyan","","","","","","","","","","","","bright_green","","","","","","","","","","","","bright_magenta","","","","","","","","","","","","bright_red","","","","","","","","","","","","bright_white","","","","","","","","","","","","bright_yellow","","","","","","","","","","","","cairo_native__vtable_cheatcode","call_contract","","caller_address","","capacity","chain_id","","cheatcode","clear","","","","","","","","","","","","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","","","","","","","compare","","","","","","","conceal","","","","","","","","","","","","contract_address","","cyan","","","","","","","","","","","","default","","","deploy","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","dim","","","","","","","","","","","","drop","","","","","","","","","","","","emit_event","","entry_point_selector","","eq","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fee_data_availability_mode","fg","","","","","","","","","","","","fixed","","","","","","","","","","","","fmt","","","","","","","","","","","from","","","","","","","","","","","","get_block_hash","","get_class_hash_at","","get_execution_info","","get_execution_info_v2","","green","","","","","","","","","","","","hash","","","","","","","","","hi","init","","","","","","","","","","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","invert","","","","","","","","","","","","is_infinity","","italic","","","","","","","","","","","","keccak","","library_call","","linger","","","","","","","","","","","","lo","magenta","","","","","","","","","","","","mask","","","","","","","","","","","","max_amount","max_fee","","max_price_per_unit","new","","nonce","","nonce_data_availability_mode","on_black","","","","","","","","","","","","on_blue","","","","","","","","","","","","on_bright","","","","","","","","","","","","on_bright_black","","","","","","","","","","","","on_bright_blue","","","","","","","","","","","","on_bright_cyan","","","","","","","","","","","","on_bright_green","","","","","","","","","","","","on_bright_magenta","","","","","","","","","","","","on_bright_red","","","","","","","","","","","","on_bright_white","","","","","","","","","","","","on_bright_yellow","","","","","","","","","","","","on_cyan","","","","","","","","","","","","on_fixed","","","","","","","","","","","","on_green","","","","","","","","","","","","on_magenta","","","","","","","","","","","","on_primary","","","","","","","","","","","","on_red","","","","","","","","","","","","on_rgb","","","","","","","","","","","","on_white","","","","","","","","","","","","on_yellow","","","","","","","","","","","","partial_cmp","","","","","","","paymaster_data","primary","","","","","","","","","","","","ptr","quirk","","","","","","","","","","","","rapid_blink","","","","","","","","","","","","red","","","","","","","","","","","","replace_class","","resetting","","","","","","","","","","","","resource","resource_bounds","rgb","","","","","","","","","","","","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","","sequencer_address","serialize","","","","","","","","","sha256_process_block","","signature","","since","storage_read","","storage_write","","strike","","","","","","","","","","","","tip","to_owned","","","","","","","","","","transaction_hash","","try_from","","","","","","","","","","","","try_into","","","","","","","","","","","","tx_info","","type_id","","","","","","","","","","","","underline","","","","","","","","","","","","until","upcast","","","","","","","","","","","","upcast_mut","","","","","","","","","","","","version","","vzip","","","","","","","","","","","","whenever","","","","","","","","","","","","white","","","","","","","","","","","","wrap","","","","","","","","","","","","x","","y","","yellow","","","","","","","","","","","","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","","","attr","","","bg","","","big4int_to_u256","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","call_contract","cheatcode","clear","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","cyan","","","data","decode_felts_as_str","default","","deploy","deref","","","deref_mut","","","dim","","","drop","","","emit_event","encode_str_as_felts","events","","execution_info","fg","","","fixed","","","fmt","","","from","","","get_block_hash","get_class_hash_at","get_execution_info","get_execution_info_v2","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","keccak","keys","l2_to_l1_messages","library_call","linger","","","logs","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","quirk","","","rapid_blink","","","red","","","replace_class","resetting","","","rgb","","","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","sha256_process_block","storage","storage_read","storage_write","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","u256_to_biguint","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","BuiltinCosts","HALF_PRIME","LayoutError","PRIME","SHARED_LIBRARY_EXT","__clone_box","","add_mod","attr","","bg","","bitwise","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cairo_to_sierra","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","const","create_engine","cyan","","debug_with","decode_error_message","default","deref","","deref_mut","","deserialize","dim","","drop","","ecop","eq","equivalent","","","","felt252_bigint","felt252_short_str","felt252_str","fg","","find_entry_point","find_entry_point_by_idx","find_function_id","fixed","","fmt","","","from","","generate_function_name","get_integer_layout","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","layout_repeat","linger","","magenta","","mask","","mem_tracing","mul_mod","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","padding_needed_for","pedersen","poseidon","primary","","quirk","","rapid_blink","","red","","register_runtime_symbols","resetting","","rgb","","run_pass_manager","serialize","strike","","to_owned","","to_smolstr","to_string","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","report_stats"],"q":[[0,"cairo_native"],[251,"cairo_native::Value"],[262,"cairo_native::cache"],[352,"cairo_native::cache::aot"],[437,"cairo_native::cache::jit"],[523,"cairo_native::context"],[615,"cairo_native::debug"],[616,"cairo_native::docs"],[624,"cairo_native::error"],[929,"cairo_native::error::CompilerError"],[931,"cairo_native::error::SierraAssertError"],[932,"cairo_native::error::panic"],[1020,"cairo_native::execution_result"],[1329,"cairo_native::executor"],[1602,"cairo_native::metadata"],[1700,"cairo_native::metadata::auto_breakpoint"],[1885,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[1887,"cairo_native::metadata::debug_utils"],[1982,"cairo_native::metadata::drop_overrides"],[2065,"cairo_native::metadata::dup_overrides"],[2148,"cairo_native::metadata::enum_snapshot_variants"],[2232,"cairo_native::metadata::gas"],[2613,"cairo_native::metadata::gas::GasMetadataError"],[2614,"cairo_native::metadata::realloc_bindings"],[2699,"cairo_native::metadata::runtime_bindings"],[2799,"cairo_native::metadata::tail_recursion"],[2886,"cairo_native::module"],[2975,"cairo_native::starknet"],[4209,"cairo_native::starknet_stub"],[4509,"cairo_native::utils"],[4721,"cairo_native::utils::mem_tracing"],[4722,"dyn_clone::sealed"],[4723,"yansi::attr_quirk"],[4724,"yansi::paint"],[4725,"yansi::color"],[4726,"cairo_native::ffi"],[4727,"cairo_native::values"],[4728,"core::cmp"],[4729,"melior::context"],[4730,"melior::ir::module"],[4731,"cairo_lang_sierra::program"],[4732,"cairo_lang_sierra::extensions::core"],[4733,"cairo_lang_sierra::program_registry"],[4734,"melior::ir::attribute"],[4735,"core::result"],[4736,"serde::de"],[4737,"core::fmt"],[4738,"core::convert"],[4739,"starknet_types_core::felt"],[4740,"core::clone"],[4741,"alloc::vec"],[4742,"core::hash"],[4743,"alloc::boxed"],[4744,"cairo_lang_semantic::substitution"],[4745,"alloc::collections::vec_deque"],[4746,"core::option"],[4747,"cairo_lang_utils::ordered_hash_map"],[4748,"std::path"],[4749,"serde::ser"],[4750,"core::any"],[4751,"yansi::condition"],[4752,"cairo_native::executor::aot"],[4753,"alloc::sync"],[4754,"cairo_native::executor::jit"],[4755,"core::alloc::layout"],[4756,"melior::error"],[4757,"serde_json::error"],[4758,"libloading::error"],[4759,"std::io::error"],[4760,"cairo_lang_sierra::edit_state"],[4761,"core::num::error"],[4762,"cairo_lang_sierra::ids"],[4763,"core::error"],[4764,"smol_str"],[4765,"alloc::string"],[4766,"cairo_native::executor::contract"],[4767,"core::ffi"],[4768,"libloading::safe"],[4769,"cairo_lang_starknet_classes::contract_class"],[4770,"core::ops::function"],[4771,"melior::ir::block"],[4772,"melior::ir::location"],[4773,"melior::ir::value"],[4774,"melior::execution_engine"],[4775,"cairo_lang_sierra_ap_change"],[4776,"cairo_lang_sierra_gas"],[4777,"cairo_lang_sierra::extensions::modules::gas"],[4778,"alloc::collections::btree::map"],[4779,"melior::ir::operation"],[4780,"ark_ff::biginteger"],[4781,"num_bigint::biguint"],[4782,"anyhow"],[4783,"num_bigint::bigint"],[4784,"alloc::borrow"],[4785,"cairo_native::compiler"]],"i":"A`Ab001000000110`0000000000000`101010101010101010101010101010101010`1010101011`10`10`11010010`101011110000```1010101110000000000000001011011111110000000101010101010``````101010101010101010101010101010101010101011010101010100``1010101010101010`1010101010ABjABlABn2AC`2210ACb0Fn`0```000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`Gj00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Gh000000000000000000000000000000000000000000000000000000000000000000000000000000000000`H`0000000000000000000000000000000000000`0000000000000000000000000000000000000000000000000000`````````Hl0Hn1Bh`00Fb`13111111111111110113`111`1113213213213213213213213213213213213213213213213213213213213213213213213213213211332211111111111111321321321111111333333322222221321321321321321132132132132132132132132132132132132132132132132132132132132132`1321321321321321321132132132132132132132132132132132132132132ACd0ACf``In00000000000000000000000000000000000000000000000000000000000000000000000Jn1111111111111```K`KbKd210210221021021021021021021021021021021021021021021012221021021021020202102102021021021021021022102222111100000021021021021002102021022222221111111000000021021021021021021021021021021021021021021021021021021021021021021021021021021020222102102221021010210102102210210210210210210210210210210210210210210```KfHbGl210210210210210210210210210210210210210210210210210222210210210210210210221021021021021021021010210211111110000000222222210210210101010210221021021021021021021021021021021021021021021021021021021021021021021021021102102102102102221022102102102102102102102102102102102`Bb`0000000000000000000`00000```0000`0000000000000000000000000000000000000000000`0000`0`00000000000``M`0Ln010101010101010101010101010101010101010101010100101010101111110101010100110111111100000001010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010ACh0`Mf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ml000000000000000000000000000000000000000000000000000000000000000000000000000000000`Mn000000000000000000000000000000000000000000000000000000000000000000000000000000000`N`0000000000000000000000000000000000000000000000000000000000000000000000000000000000Ij0````0L`NbHd22103210321032103210321032103210321032103210321032103210321032103210321032102102102103210320210321032103210321322221111333321032103210332103330222221031210322222222211111110000000333333321032103210300210321032103221032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103321032103321032103210321032103210321032103210321032103ACj`Nn00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ob00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Of0000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Hf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```On```0`````````OjA@bA@dA@fA@hA@jA@lA@nAA`AAb525A@`Ol;:9876543210;:9876543210;:9876543210;:98765432985510;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:98765432`Kl2:9185021<;:9876543<;:9876543<;:9876543<;:9876543;:98765;:9876521<;:9876543:921<;:9876543;430221<;:987654321<;:9876543;:987654321<;:987654321<;:987654302:9;:9876543;;;;::::9999888877776666555544443333821<;:987654321<;:98765431<;:987654321<;:98765430202020221<;:9876543;:9876543;21<;:987654322222221111111<<<<<<<;;;;;;;:::::::999999988888887777777666666655555554444444333333321<;:987654321<;:98765434321<;:9876543020221<;:9876543;21<;:987654321<;:987654378574385821<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:9876543;:98765821<;:9876543121<;:987654321<;:987654321<;:98765430221<;:98765437821<;:987654302020202020202020202026;:987654302851020221<;:98765438<;:98765438521<;:987654321<;:9876543:921<;:987654321<;:9876543121<;:987654321<;:98765438521<;:987654321<;:987654321<;:987654321<;:9876543434321<;:9876543```AAfAAhAAj210210`210210210210210210210210210210210210210210210222102102102102102101`2022102102102102`2022102102102102222210210222222211111110000000210210210210221022102102102102102102102102102102102102102102102102102102102102102102102102102102210210222222222222222210210210210210`210210210210210210210210`````LdJd110101101010101010101010101010101010`10101010101`10``1101011010100000```10```1010010``101011111110000000101010`101010`11010101010101010101010101010101010101010`1110101010`1010`11010001010101010101010101010`","f":"`````````````````````````````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0222222222222222222`22{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{b{b{nc}}}f{}}0{bf}0{{{b{A`}}{b{A`}}}Ad}{{b{b{c}}}Ad{}}{{{b{Af}}{b{Ah}}{b{Aj}}{b{{B`{AlAn}}}}{b{nBb}}BdBf}{{Bj{fBh}}}}99`99`{{}A`}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ab}}}Bn}==`{Blf}0{{{b{A`}}{b{A`}}}Bf}{{{b{Ab}}{b{Ab}}}Bf}{{b{b{c}}}Bf{}}0000000```{{bl}{{j{{b{c}}}}}{}}0{{bC`}{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nCb}}}Cd}{{{b{Ab}}{b{nCb}}}Cd}{C`A`}{BlA`}{cc{}}{CfAb}1{ChAb}{CjAb}{{{Cl{c}}}Ab{{Cn{Ab}}}}{D`Ab}{DbAb}{{{b{{Dd{c}}}}}Ab{{Cn{Ab}}Df}}{C`Ab}{DhAb}{DjAb}{DlAb}{DnAb}{E`Ab}{{{Eb{c}}}Ab{{Cn{Ab}}}}{b{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}4312650{{}c{}}0::::::::::``{{{b{Ah}}A`}{{Fb{{Eb{C`}}}}}}``{{{b{{Dd{C`}}}}{b{Fd}}}{{Fb{f}}}}<<<<<<<<<<<<<<<<<<<<<<<<{{bC`}{{j{{b{c}}}}}{}}0========{{bC`C`C`}{{j{{b{c}}}}}{}}0>>>>{{{b{A`}}{b{A`}}}{{El{Ad}}}}??{{bFf}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000033{{{b{Ab}}c}BjFh}``11{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}055{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0`>>{{bFl}{{j{{b{c}}}}}{}}0888888`````````````````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{{Fn{c}}}}{b{nCb}}}Cd{G`GbGdGf}}{{{Gh{c}}}{{Fn{c}}}{G`GbGd}}{{{Gj{c}}}{{Fn{c}}}{G`GbGd}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99`999999999999999>9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{n{Gj{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Gl}}}}}{G`GbGd}}33{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gj{c}}}}{b{nCb}}}Cd{G`GbGd}}{cc{}}{{{b{{Gj{c}}}}{b{c}}}{{El{{Gn{Gl}}}}}{G`GbGd}}:{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{H`}}}{{Gj{c}}}{G`GbGd}}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}};;;;43;;;;;;;;;;{{{b{n{Gh{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Hb}}}}}{GbGdG`}}<{{{b{{Gh{c}}}}}{{b{H`}}}{GbGdG`}}={Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}?{Blf}5{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gh{c}}}}{b{nCb}}}Cd{GbGdG`}}{cc{}}{{{b{{Gh{c}}}}{b{c}}}{{El{{Gn{Hb}}}}}{GbGdG`}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{H`}}}{{Gh{c}}}{GbGdG`}}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<<<1<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{H`}}{b{Aj}}Bf{El{Hd}}}{{Bj{HfBh}}}}3{{{b{H`}}}{{b{Af}}}}4{{}H`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}{{{b{H`}}{b{H`}}}Bf}{{b{b{c}}}Bf{}}0008{{bC`}{{j{{b{c}}}}}{}}{{{b{H`}}{b{nCb}}}Cd}{cc{}}={{}Bl}{{}Af}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}H`}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999{{{b{Hh}}}{{b{Hj}}}}`````````````````````````````````````````````{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<555444<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00>>>{Blf}00333{{bC`}{{j{{b{c}}}}}{}}00{{{b{Bh}}{b{nCb}}}Cd}0{{{b{Hl}}{b{nCb}}}Cd}0{{{b{Hn}}{b{nCb}}}Cd}0{I`Bh}{IbBh}{IdBh}{IfBh}{IhBh}{IjBh}{IlBh}{cc{}}{HnBh}{InBh}{HlBh}{J`Bh}{{{Ef{Jb}}}Bh}{JdBh}66{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}65432103240156{{}c{}}00999999999999{{{b{Jf}}}Bh}:::::::::::::::::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}00;;;;;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}00<<<<<<`<<<{{bFf}{{j{{b{c}}}}}{}}00=========111{{{b{Bh}}}{{El{{b{Jh}}}}}}>>>{bJj}00{bJl}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00==={{bFl}{{j{{b{c}}}}}{}}00333333333`````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{In}}{b{nCb}}}Cd}0{cc{}};{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{JlIn}111111111111=1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{{Jn{b{Hj}}}{{Fb{c}}}{}}{bJj}{bJl}{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}9{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}<<<```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00`????????????555444???????????????????????????```???{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{b{b{nc}}}f{}}00{bf}00{{{b{K`}}{b{K`}}}Ad}{{{b{Kd}}{b{Kd}}}Ad}{{b{b{c}}}Ad{}}0{b{{j{{b{c}}}}}{}}00000{{}K`}{{}Kd}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00{c{{Bj{K`}}}Bn}{c{{Bj{Kb}}}Bn}{c{{Bj{Kd}}}Bn}777{Blf}00`{{{b{K`}}{b{K`}}}Bf}{{{b{Kb}}{b{Kb}}}Bf}{{{b{Kd}}{b{Kd}}}Bf}{{b{b{c}}}Bf{}}00000000000``{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nCb}}}Cd}{{{b{Kb}}{b{nCb}}}Cd}{{{b{Kd}}{b{nCb}}}Cd}{cc{}}00{Kb{{Bj{KdBh}}}}{b{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nc}}}fEd}{{{b{Kd}}{b{nc}}}fEd}{{}Bl}00{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}50124360634215{{}c{}}00;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00======{{{b{K`}}{b{K`}}}{{El{Ad}}}}{{{b{Kd}}{b{Kd}}}{{El{Ad}}}}``???{{bFf}{{j{{b{c}}}}}{}}00``{b{{j{{b{c}}}}}{}}00000``000``444`{{{b{K`}}c}BjFh}{{{b{Kb}}c}BjFh}{{{b{Kd}}c}BjFh}333{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00777{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00???{{bFl}{{j{{b{c}}}}}{}}00:::::::::```{{bd}f}{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00============555444=============================={{{b{Kf}}}Kf}{{b{b{nc}}}f{}}{bf}{b{{j{{b{c}}}}}{}}00000{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00222{Blf}00{{{b{nKf}}}f}888{{{b{Hb}}{b{Kh}}}Kj}{{{b{Gl}}{b{Kh}}}{{Bj{KjBh}}}}{{{b{Kf}}{b{Kh}}Bf}{{Bj{KjBh}}}}{{{b{Hb}}{b{Hj}}}{{El{Kj}}}}{{{b{Gl}}{b{Hj}}}{{El{Kj}}}}{{{b{Kf}}{b{Hj}}}{{El{Kj}}}}{{bC`}{{j{{b{c}}}}}{}}00{{{b{Hb}}{b{nCb}}}Cd}{{{b{Gl}}{b{nCb}}}Cd}{{{b{Kf}}{b{nCb}}}Cd}{cc{}}00{{HfA`}{{Bj{HbBh}}}}{{HfA`}{{Bj{GlBh}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}32106450321564{{}c{}}00999{{{b{Hb}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}??????{{{b{Fd}}}{{Bj{KfBh}}}}{b{{j{{b{c}}}}}{}}00000{{{b{Hb}}}{{b{Ah}}}}{{Kn{B`{AlAn}}L`}Gl}{{{b{Aj}}{b{Lb}}A`}{{Bj{KfBh}}}}333333333333333333333333333333333333{{bC`}{{j{{b{c}}}}}{}}00444444444444{{bC`C`C`}{{j{{b{c}}}}}{}}00555555555{{{b{Hb}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}00777777777222{{{b{Kf}}D`{b{{Dd{D`}}}}Dl{El{Ld}}c}{{Bj{KdBh}}}Kl}{{{b{nKf}}c}{{Bj{fBh}}}{{Lf{Fd}}}}999{bc{}}{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00==={b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000`{{bh}{{j{{b{c}}}}}{}}`{{bl}{{j{{b{c}}}}}{}}222265222222222222`{{}Bb}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}```4{{bC`}{{j{{b{c}}}}}{}}{{{b{Bb}}{b{nCb}}}Cd}{cc{}}`{{{b{Bb}}}{{El{{b{c}}}}}Lh}{{{b{nBb}}}{{El{{b{nc}}}}}Lh}{{{b{nBb}}e}{{b{nc}}}Lh{{Ll{}{{Lj{c}}}}}}<{{}Bl}{{{b{nBb}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}Bb}111111111111{{bC`}{{j{{b{c}}}}}{}}2222{{bC`C`C`}{{j{{b{c}}}}}{}}333{{bFf}{{j{{b{c}}}}}{}}4`4{{{b{nBb}}}{{El{c}}}Lh}52`5`{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}8{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}};{{bFl}{{j{{b{c}}}}}{}};;;```{{bd}f}0{{{b{nLn}}M`}f}{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0????????6655????????????????????{{{b{M`}}}M`}{{{b{Ln}}}Ln}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}000{{}Ln}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}033{Blf}0{{{b{M`}}{b{M`}}}Bf}{{b{b{c}}}Bf{}}000;;{{bC`}{{j{{b{c}}}}}{}}0{{{b{M`}}{b{nCb}}}Cd}{{{b{Ln}}{b{nCb}}}Cd}{cc{}}0::{{{b{Ln}}{b{M`}}}Bf}{{{b{M`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}4123056{{}c{}}0{b{{j{{b{c}}}}}{}}000000000{{{b{Ln}}{b{Mb}}Md{b{Bb}}{b{M`}}}{{Bj{fBh}}}}111111111111111111111111{{bC`}{{j{{b{c}}}}}{}}022222222{{bC`C`C`}{{j{{b{c}}}}}{}}0333333{{bFf}{{j{{b{c}}}}}{}}04444441144{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}088{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0;;{{bFl}{{j{{b{c}}}}}{}}0;;;;;;```{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}====43{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{f}}}}>>>>>>>>>>>>{{{b{Mf}}{b{Mb}}Md}{{Fb{f}}}}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}{b{Hj}}Md}{{Fb{f}}}}{{}Mf}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{b{{j{{b{c}}}}}{}}{Blf}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhBlMd}{{Fb{f}}}}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Mf}}{b{nCb}}}Cd}{cc{}}5{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}>>>>>>>>>>>>>>>>>;>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{f}}}}000000{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0{{{b{Mf}}{b{Mj}}}f}141{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}4{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999943999999999999{{}Ml}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Ml}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}222254222222222222{{}Mn}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Mn}}{b{nCb}}}Cd}{cc{}}9{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000000000000000<0000{{bC`C`C`}{{j{{b{c}}}}}{}}111{{bFf}{{j{{b{c}}}}}{}}22212{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}5{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}888`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{{}N`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}={Blf}4{{bC`}{{j{{b{c}}}}}{}}{cc{}}{{{b{N`}}{b{Jf}}}{{El{{b{{Eb{Jf}}}}}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1{{{b{nN`}}{b{Jf}}{b{{Dd{Jf}}}}}f}<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00```````{{bd}f}00`{{bh}{{j{{b{c}}}}}{}}000{{bl}{{j{{b{c}}}}}{}}0003333333333333333666655553333333333333333333333333333333333333333{{{b{L`}}}L`}{{{b{Nb}}}Nb}{{{b{Hd}}}Hd}{{b{b{nc}}}f{}}00{bf}0088888888{{}L`}{{}Hd}{Bl{{b{c}}}{}}000{Bl{{b{nc}}}{}}000<<<<{Blf}000{{{b{L`}}{b{L`}}}Bf}{{{b{Nb}}{b{Nb}}}Bf}{{{b{Ij}}{b{Ij}}}Bf}{{b{b{c}}}Bf{}}00000000000>>>>{{bC`}{{j{{b{c}}}}}{}}000{{{b{L`}}{b{nCb}}}Cd}{{{b{Nb}}{b{nCb}}}Cd}{{{b{Hd}}{b{nCb}}}Cd}{{{b{Ij}}{b{nCb}}}Cd}0{cc{}}00{NdIj}{NfIj}2``{{{b{L`}}NhNj}{{El{Dl}}}}{{{b{L`}}Nh}{{Eb{{F`{DlNj}}}}}}{{{b{L`}}{b{Kh}}{El{Dl}}}{{Bj{DlIj}}}}{b{{j{{b{c}}}}}{}}000{{{b{Nb}}{b{nc}}}fEd}{{}Bl}000{{{b{L`}}{b{Kh}}}{{El{Dl}}}}{{{b{L`}}}{{Fb{{Nl{Dl{Nl{DlDl}}}}}}}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}156042315602431436052{{}c{}}000<<<<<<<<``<<<<<<<<<<<<{{{b{Aj}}{El{Hd}}}{{Bj{L`Ij}}}}================================================{{bC`}{{j{{b{c}}}}}{}}000>>>>>>>>>>>>>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}000????????????{{bFf}{{j{{b{c}}}}}{}}000{b{{j{{b{c}}}}}{}}000000000002222{{{b{Ij}}}{{El{{b{Jh}}}}}}1111{bc{}}00{bJj}{bJl}{c{{Bj{e}}}{}{}}000{{}{{Bj{c}}}{}}000{bFj}0007777{b{{b{c}}}{}}000{{{b{n}}}{{b{nc}}}{}}000>>>>{{bFl}{{j{{b{c}}}}}{}}000::::::::::::``{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}<<<<43<<<<<<<<<<<<{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}>{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Nn}}{b{nCb}}}Cd}{{{b{Af}}MhMd}{{Bj{O`Ib}}}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{Af}}{b{Ah}}}Nn}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Af}}MhMhMd}{{Bj{O`Ib}}}}==2={c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{{}Ob}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Mh{El{Mh}}Md}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}1{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Mh}}}}={Blf}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Ob}}{b{nCb}}}Cd}{cc{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Od}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}0{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}2100==============={{bC`}{{j{{b{c}}}}}{}}>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0020{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}3{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MdMhMhMh}{{Fb{Od}}}}>{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999954999999999999{{{b{Of}}}Mh}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Of}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{Mh{b{Mb}}}Of}::::::::::::=::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Of}}}Oh}=={{{b{Of}}}{{El{Oh}}}}3{{{b{nOf}}{b{Mb}}}f}?{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Hf}}{b{nCb}}}Cd}{cc{}}{{{b{Hf}}}{{El{{b{c}}}}}Lh}<{{}Bl}{{{b{nHf}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{Hf}}}{{b{Bb}}}}{{{b{Hf}}}{{b{Ah}}}}{{Ah{B`{AlAn}}Bb}Hf}333333333333{{bC`}{{j{{b{c}}}}}{}}4444{{bC`C`C`}{{j{{b{c}}}}}{}}555{{{b{Hf}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}77{{{b{nHf}}}{{El{c}}}Lh}838{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj};{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}>{{bFl}{{j{{b{c}}}}}{}}>>>`````````````````{{bd}f}000000000```{{bh}{{j{{b{c}}}}}{}}00000000000{{bl}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000````000000000000000000000000666666666666555555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{n{Ol{Oj}}}}{b{Oj}}{b{{Ol{Oj}}}}}f}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}`````{{{b{nKl}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}444444444444{{{b{Oj}}}Oj}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{b{b{nc}}}f{}}000000000{bf}000000000{{{b{A@b}}{b{A@b}}}Ad}{{{b{A@d}}{b{A@d}}}Ad}{{{b{A@f}}{b{A@f}}}Ad}{{{b{A@h}}{b{A@h}}}Ad}{{{b{A@j}}{b{A@j}}}Ad}{{{b{A@l}}{b{A@l}}}Ad}{{{b{A@n}}{b{A@n}}}Ad}{{b{b{c}}}Ad{}}000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{}A@b}{{}AA`}{{}AAb}{{{b{nKl}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00000000000{Bl{{b{nc}}}{}}00000000000{c{{Bj{A@b}}}Bn}{c{{Bj{A@d}}}Bn}{c{{Bj{A@f}}}Bn}{c{{Bj{A@h}}}Bn}{c{{Bj{A@j}}}Bn}{c{{Bj{A@l}}}Bn}{c{{Bj{A@n}}}Bn}{c{{Bj{AA`}}}Bn}{c{{Bj{AAb}}}Bn}{b{{j{{b{c}}}}}{}}00000000000{Blf}00000000000{{{b{nKl}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}``{{{b{A@b}}{b{A@b}}}Bf}{{{b{A@d}}{b{A@d}}}Bf}{{{b{A@f}}{b{A@f}}}Bf}{{{b{A@h}}{b{A@h}}}Bf}{{{b{A@j}}{b{A@j}}}Bf}{{{b{A@l}}{b{A@l}}}Bf}{{{b{A@n}}{b{A@n}}}Bf}{{{b{AA`}}{b{AA`}}}Bf}{{{b{AAb}}{b{AAb}}}Bf}{{b{b{c}}}Bf{}}00000000000000000000000000000000000`{{bl}{{j{{b{c}}}}}{}}00000000000{{bC`}{{j{{b{c}}}}}{}}00000000000{{{b{{Ol{c}}}}{b{nCb}}}CdGf}{{{b{Oj}}{b{nCb}}}Cd}{{{b{A@b}}{b{nCb}}}Cd}{{{b{A@d}}{b{nCb}}}Cd}{{{b{A@f}}{b{nCb}}}Cd}{{{b{A@h}}{b{nCb}}}Cd}{{{b{A@j}}{b{nCb}}}Cd}{{{b{A@l}}{b{nCb}}}Cd}{{{b{A@n}}{b{nCb}}}Cd}{{{b{AA`}}{b{nCb}}}Cd}{{{b{AAb}}{b{nCb}}}Cd}{cc{}}00000000000{{{b{nKl}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nKl}}D`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}{b{nDl}}}{{On{A@d}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@d}}}}{{{b{nKl}}{b{nDl}}}{{On{A@f}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00000000000{{{b{A@b}}{b{nc}}}fEd}{{{b{A@d}}{b{nc}}}fEd}{{{b{A@f}}{b{nc}}}fEd}{{{b{A@h}}{b{nc}}}fEd}{{{b{A@j}}{b{nc}}}fEd}{{{b{A@l}}{b{nc}}}fEd}{{{b{A@n}}{b{nc}}}fEd}{{{b{AA`}}{b{nc}}}fEd}{{{b{AAb}}{b{nc}}}fEd}`{{}Bl}00000000000{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}12436502561304016453212650345124306305162440561236320541150634251634203654210{{}c{}}00000000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{{b{nKl}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nA@`}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}444444444444`444444444444444444444444````{{E`E`E`E`Bf}AA`}{{E`E`E`E`Bf}AAb}```666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666{{bC`}{{j{{b{c}}}}}{}}00000000000777777777777777777777777777777777777777777777777{{bC`C`C`}{{j{{b{c}}}}}{}}00000000000888888888888888888888888{{{b{A@b}}{b{A@b}}}{{El{Ad}}}}{{{b{A@d}}{b{A@d}}}{{El{Ad}}}}{{{b{A@f}}{b{A@f}}}{{El{Ad}}}}{{{b{A@h}}{b{A@h}}}{{El{Ad}}}}{{{b{A@j}}{b{A@j}}}{{El{Ad}}}}{{{b{A@l}}{b{A@l}}}{{El{Ad}}}}{{{b{A@n}}{b{A@n}}}{{El{Ad}}}}`????????????`{{bFf}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000{{{b{nKl}}D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{f}}}}222222222222``;;;;;;;;;;;;{{{b{nKl}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}`{{{b{A@b}}c}BjFh}{{{b{A@d}}c}BjFh}{{{b{A@f}}c}BjFh}{{{b{A@h}}c}BjFh}{{{b{A@j}}c}BjFh}{{{b{A@l}}c}BjFh}{{{b{A@n}}c}BjFh}{{{b{AA`}}c}BjFh}{{{b{AAb}}c}BjFh}{{{b{nKl}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}```{{{b{nKl}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}DjD`D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00000000000`{bc{}}000000000``{c{{Bj{e}}}{}{}}00000000000{{}{{Bj{c}}}{}}00000000000``{bFj}00000000000444444444444`{b{{b{c}}}{}}00000000000{{{b{n}}}{{b{nc}}}{}}00000000000``{{}c{}}00000000000{{bFl}{{j{{b{c}}}}}{}}00000000000888888888888888888888888````888888888888```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00{AAdA@b}<<<<<<<<<<<<777666<<<<<<<<<<<<<<<<<<<<<<<<<<<{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}>>>{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{b{b{nc}}}f{}}00{bf}00{b{{j{{b{c}}}}}{}}00000`{{{b{{Dd{D`}}}}}Jl}{{}AAf}{{}AAj}{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00666{Blf}00{{{b{n{b{nAAf}}}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{Hj}}}{{Eb{D`}}}}```{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{AAf}}{b{nCb}}}Cd}{{{b{AAh}}{b{nCb}}}Cd}{{{b{AAj}}{b{nCb}}}Cd}{cc{}}00{{{b{n{b{nAAf}}}}Dl{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@d}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}32416052341605{{}c{}}00999999{{{b{n{b{nAAf}}}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}``{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}};;;`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00========={{bFf}{{j{{b{c}}}}}{}}00>>>>>>{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{f}}}}???222{{{b{n{b{nAAf}}}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{n{b{nAAf}}}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}`{{{b{n{b{nAAf}}}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{A@bAAl}555{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00999999999`````{{bd}f}0`{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0`<<<<<<<<6655<<<<<<<<<<<<<<<<<<{{{b{Fd}}}{{AAn{{Gn{Aj}}}}}}=={{{b{Ld}}}Ld}{{{b{Jd}}}Jd}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}0`{{{b{Ah}}{b{Bb}}A`}Mj}11{c{{`{Gf}}}{{AB`{{b{nCb}}}{{Lj{Cd}}}}}}{{{b{{Dd{C`}}}}}Jl}{{}Ld}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ld}}}Bn}77{Blf}0`{{{b{Jd}}{b{Jd}}}Bf}{{b{b{c}}}Bf{}}000{cD`{{Cn{ABb}}}}{{{b{Hj}}}D`}0{{bl}{{j{{b{c}}}}}{}}0{{{b{Aj}}{b{Hj}}}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}Bl}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}{b{Hj}}}{{El{{b{Kh}}}}}}{{bC`}{{j{{b{c}}}}}{}}0{{{b{Ld}}{b{nCb}}}Cd}{{{b{Jd}}{b{nCb}}}Cd}0{cc{}}0{{{b{Kh}}Bf}{{ABf{Hj}}}}{DjABh}{b{{j{{b{c}}}}}{}}0{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}3012456{{}c{}}09999{{{b{ABh}}Bl}{{Bj{{F`{ABhBl}}Jd}}}}::::::``::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}0;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}0<<<<{{{b{ABh}}Bl}Bl}``=={{bFf}{{j{{b{c}}}}}{}}0>>>>{{{b{Mj}}}f}??33{{{b{Af}}{b{nAh}}}{{Bj{fIb}}}}{{{b{Ld}}c}BjFh}{b{{j{{b{c}}}}}{}}0{bc{}}0{bJj}{bJl}{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}066{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0{{}c{}}0{{bFl}{{j{{b{c}}}}}{}}0::::::{{}f}","D":"L@nKKj","p":[[1,"reference"],[5,"Private",4722],[1,"unit"],[6,"Attribute",4723],[5,"Painted",4724],[6,"Color",4725],[0,"mut"],[6,"OptLevel",0,4726],[6,"Value",0,4727],[6,"Ordering",4728],[5,"Context",4729],[5,"Module",4730],[5,"Program",4731],[6,"CoreType",4732],[6,"CoreLibfunc",4732],[5,"ProgramRegistry",4733],[5,"MetadataStorage",1602],[5,"Attribute",4734],[1,"bool"],[6,"Error",624],[6,"Result",4735],[1,"usize"],[10,"Deserializer",4736],[1,"u8"],[5,"Formatter",4737],[8,"Result",4737],[1,"i128"],[1,"i16"],[1,"i8"],[1,"array"],[10,"Into",4738],[5,"Felt",4739],[1,"i32"],[1,"slice"],[10,"Clone",4740],[1,"u16"],[1,"u32"],[1,"u64"],[1,"i64"],[1,"u128"],[5,"Vec",4741],[10,"Hasher",4742],[5,"Box",4743],[6,"RewriteResult",4744],[5,"VecDeque",4745],[6,"Option",4746],[5,"OrderedHashMap",4747],[1,"tuple"],[8,"Result",624],[5,"Path",4748],[6,"Quirk",4723],[10,"Serializer",4749],[5,"TypeId",4750],[5,"Condition",4751],[6,"ProgramCache",262],[10,"PartialEq",4728],[10,"Eq",4728],[10,"Hash",4742],[10,"Debug",4737],[5,"JitProgramCache",437],[5,"AotProgramCache",352],[5,"AotNativeExecutor",1329,4752],[5,"Arc",4753],[5,"NativeContext",523],[5,"JitNativeExecutor",1329,4754],[5,"MetadataComputationConfig",2232],[5,"NativeModule",2886],[6,"CoreConcreteLibfunc",4732],[1,"str"],[6,"SierraAssertError",624],[6,"CompilerError",624],[5,"LayoutError",4755],[6,"Error",4756],[5,"Error",4757],[6,"Error",4758],[5,"Error",4759],[6,"GasMetadataError",2232],[6,"EditStateError",4760],[5,"NativeAssertError",932],[5,"TryFromIntError",4761],[6,"ProgramRegistryError",4733],[5,"LayoutError",4509],[5,"ConcreteTypeId",4762],[10,"Error",4763],[5,"SmolStr",4764],[5,"String",4765],[10,"ToNativeAssertError",932],[5,"BuiltinStats",1020],[5,"ExecutionResult",1020],[5,"ContractExecutionResult",1020],[5,"AotContractExecutor",1329,4766],[5,"FunctionId",4762],[6,"c_void",4767],[10,"StarknetSyscallHandler",2975],[5,"Library",4768],[5,"GasMetadata",2232],[5,"ContractEntryPoints",4769],[5,"BuiltinCosts",4509],[10,"AsRef",4738],[10,"Any",4750],[17,"Output"],[10,"FnOnce",4770],[5,"AutoBreakpoint",1700],[6,"BreakpointEvent",1700],[5,"Block",4771],[5,"Location",4772],[5,"DebugUtils",1887],[5,"Value",4773],[5,"ExecutionEngine",4774],[5,"DropOverridesMeta",1982],[5,"DupOverridesMeta",2065],[5,"EnumSnapshotVariantsMeta",2148],[5,"GasCost",2232],[6,"ApChangeError",4775],[6,"CostError",4776],[5,"StatementIdx",4731],[6,"CostTokenType",4777],[5,"BTreeMap",4778],[5,"ReallocBindingsMeta",2614],[5,"Operation",4779],[5,"RuntimeBindingsMeta",2699],[5,"OperationRef",4779],[5,"TailRecursionMeta",2799],[5,"BlockRef",4771],[5,"Felt252Abi",2975],[5,"ArrayAbi",2975],[8,"SyscallResult",2975],[5,"DummySyscallHandler",2975],[5,"U256",2975],[5,"ExecutionInfo",2975],[5,"ExecutionInfoV2",2975],[5,"TxV2Info",2975],[5,"ResourceBounds",2975],[5,"BlockInfo",2975],[5,"TxInfo",2975],[5,"Secp256k1Point",2975],[5,"Secp256r1Point",2975],[5,"BigInt",4780],[5,"StubSyscallHandler",4209],[5,"StubEvent",4209],[5,"ContractLogs",4209],[5,"BigUint",4781],[8,"Result",4782],[10,"Fn",4770],[5,"BigInt",4783],[5,"GenFunction",4731],[6,"Cow",4784],[5,"Layout",4755],[15,"Struct",251],[15,"Enum",251],[15,"Felt252Dict",251],[15,"BoundedInt",251],[15,"IntRange",251],[15,"BoundedIntOutOfRange",929],[15,"Range",931],[15,"EnumInit",1885],[15,"NotEnoughGas",2613]],"r":[[14,4726],[28,4727],[76,4785],[164,4726],[167,4726],[263,352],[265,437],[1329,4766],[1330,4752],[1331,4754]],"b":[[113,"impl-From%3Cu8%3E-for-OptLevel"],[114,"impl-From%3Cusize%3E-for-OptLevel"],[116,"impl-From%3Ci128%3E-for-Value"],[118,"impl-From%3Ci16%3E-for-Value"],[119,"impl-From%3Ci8%3E-for-Value"],[120,"impl-From%3C%5BT;+N%5D%3E-for-Value"],[121,"impl-From%3CFelt%3E-for-Value"],[122,"impl-From%3Ci32%3E-for-Value"],[123,"impl-From%3C%26%5BT%5D%3E-for-Value"],[124,"impl-From%3Cu8%3E-for-Value"],[125,"impl-From%3Cu16%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu64%3E-for-Value"],[128,"impl-From%3Ci64%3E-for-Value"],[129,"impl-From%3Cu128%3E-for-Value"],[130,"impl-From%3CVec%3CT%3E%3E-for-Value"],[295,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[296,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[739,"impl-Display-for-Error"],[740,"impl-Debug-for-Error"],[741,"impl-Display-for-SierraAssertError"],[742,"impl-Debug-for-SierraAssertError"],[743,"impl-Debug-for-CompilerError"],[744,"impl-Display-for-CompilerError"],[745,"impl-From%3CLayoutError%3E-for-Error"],[746,"impl-From%3CError%3E-for-Error"],[747,"impl-From%3CError%3E-for-Error"],[748,"impl-From%3CError%3E-for-Error"],[749,"impl-From%3CError%3E-for-Error"],[750,"impl-From%3CGasMetadataError%3E-for-Error"],[751,"impl-From%3CEditStateError%3E-for-Error"],[753,"impl-From%3CCompilerError%3E-for-Error"],[754,"impl-From%3CNativeAssertError%3E-for-Error"],[755,"impl-From%3CSierraAssertError%3E-for-Error"],[756,"impl-From%3CTryFromIntError%3E-for-Error"],[757,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[758,"impl-From%3CLayoutError%3E-for-Error"],[960,"impl-Debug-for-NativeAssertError"],[961,"impl-Display-for-NativeAssertError"],[2376,"impl-Display-for-GasMetadataError"],[2377,"impl-Debug-for-GasMetadataError"],[2381,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[2382,"impl-From%3CCostError%3E-for-GasMetadataError"],[4596,"impl-Display-for-LayoutError"],[4597,"impl-Debug-for-LayoutError"]],"c":"OzAAAAEAAC8AFwBDAAEAHgEAAHMBAADIAQAAHgIAAMkCAgC4AwAAOgQCAGkFAgBWBgAAzQYBAHMHAADRBwAAJAgAAHcIAAAICQMASQoAAJ4KAAACCwAAWQsAAJcMCwCuEAIAyhEBAA==","e":"OzAAAAEAAI4GHwEBAAAAAwAKABAADAAeAAEALAADAEIAAABFAAcAUAAAAFMABgBdAAsAagAAAHAAAwB1AAAAdwAMAIYAEACkAAAA0QAAAN4AAADjAAcA7QADAPIAAQD8ABAAEwEBACEBAQAkAQAAJwECACwBBwA3AQAAVgECAFoBAgBhAQAAaAEBAHQBAAB3AQEAegEAAH0BAAB/AQAAgQEHAI8BAACrAQIArwECAL0BAQDJAQAAywEAAM0BAQDQAQAA0wEAANUBAADXAQcA5QEAAAECAgAFAgIAEwIBACECAAAjAgIAJwIFAC8CAAAyAgAANAIGAEECAABdAgIAYQICAGgCAABxAgcAegIQAIwCCQCoAgUA0gIFANsCAgDkAgwA8gIFAP0CFwAkAwAAdwMAAHsDDgCNAwgAogMCAK0DAQC7AwEAvgMAAMEDAQDFAwcA0wMAAO8DBQD2AwIA/QMAAAAEAgAJBAAAFgQFADcEAgA9BAwAUAQKAF4EFAB5BAIAgwQZAOsEAwD1BAEA/QQBAAIFAQAHBQMADgULAB0FCAAzBQAANQUAAEgFBQBsBQIAdQUFAH4FAwCFBQUAjgUCAJQFAACZBRcAtwUBALoFAAC8BQAAygUBAAwGAAAhBgkALgYIAEUGAABLBgEAWgYCAF4GAABhBgAAZAYAAGYGAABpBgAAawYAAG0GBgCaBgIAngYCAKUGBQC3BgMAzwYFANkGBADgBgYA6wYBAPEGEQAPBwAARgcHAFAHBQBeBwIAZwcCAHYHAAB4BwIAfAcAAIAHAACDBwcApgcGALAHAAC0BwIAuAcCAL8HAADGBwEA1AcCANgHAADbBwAA3gcHAAcIAgALCAIAEggAABkIAQAnCAIAKwgAAC4IAAAxCAcAWggCAF4IAgBlCAAAbAgBAHoIAgB+CAAAgggAAIQIBwCsCAAArggCALIIAgC5CAIAvwgEANwIBwAMCQgAHQkJACsJEgBGCQQATgkBAFEJAwBaCSIAiQkBAJcJAAAACgAABQoQABoKCwA2CgAAPgoBAEwKAQBPCgAAUgoAAFYKBwCBCgIAhQoCAJMKAQChCgIAqwoAAK4KAACwCgAAsgoHAMMKAADkCgIA6AoBAOsKAAD3CgEABgsBAAkLAAAMCwAADwsHADwLAgBACwIATgsBAFwLAQBfCwAAYgsAAGYLAABoCwYAdQsCAI0LAACVCwIAmQsCAKALAgCkCwEAqAsHALELDADuCwMACgwXAI8MBwCjDCsA2wwBAOkMJQAbDT0AcQ0KAIgNBwCcDWkAHg4BACwOAwA8DgAAVQ4IAE4PBwBiDwAAhw8BAJUPAQCjDygA2A8yABcQJgBiEAMAchAAAHUQAgB+EAAAixAFAKwQAQCxEAgAwBAKAM4QBwDcEAIA4hADAOkQFwAKEQMAEREAAGARAABnEQ4AeREMAIkRCACeEQIAohEDAKoRAACzEQMAzBEFANQRAADaEQUA4hEHAPQRAgD9EQ8AGhIBAEUSAQBPEgAAVBIBAFgSCQBkEgUAchIAAA=="}],["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","output_library","output_mlir","path","primary","","quirk","","rapid_blink","","red","","replace_ids","resetting","","rgb","","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_compile"],[190,"dyn_clone::sealed"],[191,"yansi::attr_quirk"],[192,"yansi::paint"],[193,"clap_builder::builder::command"],[194,"yansi::color"],[195,"core::fmt"],[196,"clap_builder::parser::matches::arg_matches"],[197,"clap_builder"],[198,"core::result"],[199,"clap_builder::util::id"],[200,"core::option"],[201,"cairo_lang_utils::ordered_hash_map"],[202,"cairo_lang_semantic::substitution"],[203,"alloc::vec"],[204,"alloc::collections::vec_deque"],[205,"alloc::boxed"],[206,"anyhow"],[207,"clap_builder::builder::possible_value"],[208,"core::any"],[209,"yansi::condition"]],"i":"Ab`0`0Al1000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`10101010101010101010101010101010101010101000001010101001010010111010101010100011010101010","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}4306215{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333````33{{bCf}{{j{{b{c}}}}}{}}04444`4411`44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????","D":"A@d","p":[[1,"reference"],[5,"Private",190],[1,"unit"],[6,"Attribute",191],[5,"Painted",192],[5,"Command",193],[6,"Color",194],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",195],[8,"Result",195],[5,"Args",0],[5,"ArgMatches",196],[8,"Error",197],[6,"Result",198],[5,"Id",199],[6,"Option",200],[5,"OrderedHashMap",201],[6,"RewriteResult",202],[5,"Vec",203],[5,"VecDeque",204],[5,"Box",205],[1,"tuple"],[8,"Result",206],[6,"Quirk",191],[5,"PossibleValue",207],[5,"TypeId",208],[1,"slice"],[5,"Condition",209]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADwADQAAAAEAAwACAAkAAQAVAAMALQAEADYAAwA8AAEAQgABAEYAAQBKABAAZQAAAKQABwCuAAgA"}],["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","input","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","load_program","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","parse_input","parse_output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","starknet","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_dump"],[192,"dyn_clone::sealed"],[193,"yansi::attr_quirk"],[194,"yansi::paint"],[195,"clap_builder::builder::command"],[196,"yansi::color"],[197,"core::fmt"],[198,"clap_builder::parser::matches::arg_matches"],[199,"clap_builder"],[200,"core::result"],[201,"clap_builder::util::id"],[202,"core::option"],[203,"cairo_lang_semantic::substitution"],[204,"alloc::vec"],[205,"alloc::collections::vec_deque"],[206,"cairo_lang_utils::ordered_hash_map"],[207,"alloc::boxed"],[208,"std::path"],[209,"cairo_lang_sierra::program"],[210,"core::error"],[211,"alloc::string"],[212,"core::any"],[213,"yansi::condition"]],"i":"``Ad0Ab1010001010101010101010101010101010101010101010001010101010101010101000100100000000111111101010101`01`0101010101010101010101010101010101010101010``01010101010100101010101010101000101010101","f":"````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}07777{Af{{b{c}}}{}}0{Af{{b{A`c}}}{}}099{Aff}0;;{{bAh}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Aj}}}Al}{{{b{Ad}}{b{A`Aj}}}Al}{cc{}}0{{{b{An}}}{{Bb{AbB`}}}}{{{b{A`An}}}{{Bb{AbB`}}}}{b{{j{{b{c}}}}}{}}0{{}{{Bf{Bd}}}}{{}Af}0`{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Bj{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bn{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{c}}}}}{{Bb{Bhe}}}{}{}}4635210{{}c{}}0::::::{{{b{Cd}}Cf}{{Bb{Ch{Cb{Cj}}}}}};;{{}{{Bb{f{Cb{Cj}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<{{bAh}{{j{{b{c}}}}}{}}0========{{bAhAhAh}{{j{{b{c}}}}}{}}0>>>>`{{{b{Cl}}}{{Bb{CnD`}}}}{{{b{Cl}}}{{Bb{AdD`}}}}{b{{j{{b{c}}}}}{}}0{{bDb}{{j{{b{c}}}}}{}}011111144`11{bc{}}0{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bDd}055{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Ab}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Ab}}{b{A`An}}}{{Bb{fB`}}}}{{}c{}}0{{bDf}{{j{{b{c}}}}}{}}0;;;;;;","D":"Of","p":[[1,"reference"],[5,"Private",192],[1,"unit"],[6,"Attribute",193],[5,"Painted",194],[5,"Command",195],[6,"Color",196],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[1,"u8"],[5,"Formatter",197],[8,"Result",197],[5,"ArgMatches",198],[8,"Error",199],[6,"Result",200],[5,"Id",201],[6,"Option",202],[6,"RewriteResult",203],[5,"Vec",204],[5,"VecDeque",205],[1,"tuple"],[5,"OrderedHashMap",206],[5,"Box",207],[5,"Path",208],[1,"bool"],[5,"Program",209],[10,"Error",210],[1,"str"],[5,"PathBuf",208],[5,"String",211],[6,"Quirk",193],[5,"TypeId",212],[5,"Condition",213]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAAEUADgAAAAYACQABABUAAwAtAAcAOQADAD8AAQBFAAEASQABAE0AEQBnAAAAagAAAJUAAgCnAAcAsQAHAA=="}],["cairo_native_run",{"t":"PFPGNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNCNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","available_gas","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","path","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","run_mode","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_run"],[190,"cairo_native_run::utils"],[369,"cairo_native_run::utils::test"],[624,"dyn_clone::sealed"],[625,"yansi::attr_quirk"],[626,"yansi::paint"],[627,"clap_builder::builder::command"],[628,"yansi::color"],[629,"core::fmt"],[630,"clap_builder::parser::matches::arg_matches"],[631,"clap_builder"],[632,"core::result"],[633,"clap_builder::util::id"],[634,"core::option"],[635,"alloc::vec"],[636,"cairo_lang_semantic::substitution"],[637,"alloc::collections::vec_deque"],[638,"alloc::boxed"],[639,"cairo_lang_utils::ordered_hash_map"],[640,"anyhow"],[641,"clap_builder::builder::possible_value"],[642,"core::any"],[643,"yansi::condition"],[644,"cairo_lang_sierra::program"],[645,"starknet_types_core::felt"],[646,"alloc::vec::into_iter"],[647,"alloc::string"],[648,"cairo_native::values"],[649,"cairo_native::execution_result"],[650,"cairo_lang_runner"],[651,"cairo_lang_test_plugin"],[652,"scarb_metadata"],[653,"cairo_lang_test_plugin::test_config"],[654,"cairo_lang_sierra::ids"],[655,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ab`0`0Al10000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`1010101010101010101010101010101010101010100010101010101000101110101010101000`11010101010D`0``0Ff1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fh0```EdFj2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0`{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}3460125{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333``33{{bCf}{{j{{b{c}}}}}{}}044444411``44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}`{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000998800000000000000000000{{{b{D`}}}D`}{{b{b{A`c}}}f{}}{bf}3333{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}055{Adf}077{{{b{Db}}{b{Dd}}}{{Cd{{b{Df}}}}}}{{bAf}{{j{{b{c}}}}}{}}0{{{b{D`}}{b{A`Ah}}}Aj}{{{Dj{Dh}}}Dl}{cc{}}0;;{{}Ad}0{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}5210346{{}c{}}0{b{{j{{b{c}}}}}{}}000{{{b{Dn}}}{{Bh{Dh}}}}111111111111111111111111111111>>11111111{{bAfAfAf}{{j{{b{c}}}}}{}}02222`22{{bCf}{{j{{b{c}}}}}{}}0333333{{{b{E`}}}{{Cd{Eb}}}}22`44`{bc{}}{{{b{D`}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Cl{D`}}}}}}=={{bCn}{{j{{b{c}}}}}{}}0======`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{b{c}}}{}}00{Ad{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{Ed}}Ad}f}{Adf}00``555{{EfEhEhDl}{{Cb{EfAd}}}}{{{b{Ej}}}{{Bh{{b{El}}}}}}{{bAf}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}36145024532106{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAfAfAf}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bCf}{{j{{b{c}}}}}{}}00111111111222{{{Bh{{Cb{DlEn}}}}Db{C`{F`{C`{FbFd}}}}Ff}{{Cd{Ed}}}}`222{c{{Bb{e}}}{}{}}00{{}{{Bb{c}}}{}}00{bCj}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bCn}{{j{{b{c}}}}}{}}00888888888","D":"CGn","p":[[1,"reference"],[5,"Private",624],[1,"unit"],[6,"Attribute",625],[5,"Painted",626],[5,"Command",627],[6,"Color",628],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",629],[8,"Result",629],[5,"Args",0],[5,"ArgMatches",630],[8,"Error",631],[6,"Result",632],[5,"Id",633],[6,"Option",634],[5,"Vec",635],[6,"RewriteResult",636],[5,"VecDeque",637],[5,"Box",638],[5,"OrderedHashMap",639],[1,"tuple"],[8,"Result",640],[6,"Quirk",625],[5,"PossibleValue",641],[5,"TypeId",642],[1,"slice"],[5,"Condition",643],[6,"RunMode",190],[5,"Program",644],[1,"str"],[8,"Function",644],[5,"Felt",645],[5,"IntoIter",646],[5,"String",647],[6,"Value",648],[5,"ExecutionResult",649],[6,"RunResultValue",650],[5,"TestsSummary",369],[5,"TestCompilation",651],[1,"bool"],[5,"PackageMetadata",652],[5,"TargetMetadata",652],[5,"TestConfig",653],[5,"FunctionId",654],[6,"CostTokenType",655],[1,"i32"],[5,"RunArgs",190],[6,"TestStatus",369],[5,"TestResult",369]],"r":[],"b":[],"c":"OzAAAAEAAAYAAwAsAAEA5gABAKoBAgA=","e":"OzAAAAEAALEAIAAAAAEAAwACAAkAAQAWAAMALgAEADcAAwA9AAEAQwABAEcAAQBLABAAZgAAAKMABwCtAAkAvwAEANAAAwDoAAIA7wADAPUAAQD8AAAAAgEPAEcBAABVAQAAWAEIAGMBBgByAQEAiQEFALMBBQC9AQQA0QEYADgCAABQAggAXAIIAA=="}],["cairo_native_runtime",{"t":"SSFFFFHHNNNNNNNNHHHHHHHHHHHHHHHHONNNHONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BYTES_IN_WORD","BYTE_ARRAY_MAGIC","DICT_GAS_REFUND_PER_ACCESS","FeltDict","FormattedItem","HALF_PRIME","as_cairo_short_string","as_cairo_short_string_ex","borrow","","","","borrow_mut","","","","cairo_native__dict_drop","cairo_native__dict_dup","cairo_native__dict_gas_refund","cairo_native__dict_get","cairo_native__dict_new","cairo_native__get_costs_builtin","cairo_native__libfunc__debug__print","cairo_native__libfunc__ec__ec_point_from_x_nz","cairo_native__libfunc__ec__ec_point_try_new_nz","cairo_native__libfunc__ec__ec_state_add","cairo_native__libfunc__ec__ec_state_add_mul","cairo_native__libfunc__ec__ec_state_init","cairo_native__libfunc__ec__ec_state_try_finalize_nz","cairo_native__libfunc__hades_permutation","cairo_native__libfunc__pedersen","cairo_native__set_costs_builtin","count","deref","","fmt","format_next_item","free_fn","from","","","","get","inner","into","","","","quote_if_string","try_from","","","","try_into","","","","type_id","","","","upcast","","","","upcast_mut","","","","vzip","","",""],"q":[[0,"cairo_native_runtime"],[73,"starknet_types_core::felt"],[74,"alloc::string"],[75,"core::option"],[76,"core::ffi"],[77,"core::fmt"],[78,"core::iter::traits::iterator"],[79,"core::clone"],[80,"core::result"],[81,"core::any"]],"i":"````````BlBdBfn3210````````````````0210`032103032103321032103210321032103210","f":"``````{{{d{b}}}{{h{f}}}}{{{d{b}}j}{{h{f}}}}{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}000{{n{h{{Af{A`}{{Ab{Ad}}}}}}}Ad}{{n{Af{A`}{{Ab{A`}}}}}n}{nAh}{{{d{ln}}{d{{Al{Aj}}}}}A`}{{{Af{A`}{{Ab{Ad}}}}}n}{{}Ah}{{AnAlB`}An}{{{d{l{Al{{Al{Aj}}}}}}}Bb}0{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{Aj}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Bb}{{{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}}Ad}{{{d{l{Al{Aj}}}}{d{{Al{Aj}}}}{d{{Al{Aj}}}}}Ad}{AhAh}`{{{d{Bd}}}{{d{b}}}}{{{d{Bf}}}{{d{Ah}}}}{{{d{n}}{d{lBh}}}Bj}{{{d{lc}}}{{h{Bl}}}{{C`{}{{Bn{b}}}}Cb}}`{cc{}}000{Blf}`{{}c{}}0001{c{{Cd{e}}}{}{}}000{{}{{Cd{c}}}{}}000{dCf}000{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}0005555","D":"Cn","p":[[5,"Felt",73],[1,"reference"],[5,"String",74],[6,"Option",75],[1,"usize"],[0,"mut"],[5,"FeltDict",0],[6,"c_void",76],[17,"Output"],[1,"unit"],[1,"fn"],[1,"u64"],[1,"u8"],[1,"array"],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[5,"Formatter",77],[8,"Result",77],[5,"FormattedItem",0],[17,"Item"],[10,"Iterator",78],[10,"Clone",79],[6,"Result",80],[5,"TypeId",81]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACoABwAAAAMABgAAAAkABwAhAAMAJgAAACwAAAAyABcA"}],["cairo_native_stress",{"t":"SJFFSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNHHNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","command","command_for_update","compile_and_insert","conceal","","context","cyan","","deref","","deref_mut","","dim","","directory_get_size","directory_is_empty","drop","","fg","","fixed","","fmt","from","","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","modify_starknet_contract","new","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","rounds","set_global_subscriber","strike","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_stress"],[188,"yansi::attr_quirk"],[189,"yansi::paint"],[190,"clap_builder::builder::command"],[191,"yansi::color"],[192,"cairo_lang_sierra::program"],[193,"cairo_native::ffi"],[194,"cairo_native::executor::aot"],[195,"alloc::sync"],[196,"core::cmp"],[197,"core::hash"],[198,"core::fmt"],[199,"std::io::error"],[200,"std::path"],[201,"core::convert"],[202,"clap_builder::parser::matches::arg_matches"],[203,"clap_builder"],[204,"core::result"],[205,"cairo_lang_sierra::ids"],[206,"core::option"],[207,"clap_builder::util::id"],[208,"alloc::boxed"],[209,"cairo_lang_semantic::substitution"],[210,"alloc::vec"],[211,"alloc::collections::vec_deque"],[212,"cairo_lang_utils::ordered_hash_map"],[213,"cairo_native::context"],[214,"core::any"],[215,"yansi::condition"]],"i":"`````nC`001010101010101010101010101010101011000110110101010``10101001000`110010111111100000001010101010`10`1101010101010101010101010101010101010101001010101010100`10101010101010001010101010","f":"`````{{bd}{{f{{b{c}}}}}{}}0{hh}0{{bj}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0222222222222222222`22{{}h}0{{{b{l{n{c}}}}c{b{A`}}Ab}{{Af{Ad}}}{AhAjAlAn}}44`44{B`{{b{c}}}{}}0{B`{{b{lc}}}{}}066{c{{Bd{Bb}}}{{Bh{Bf}}}}{c{{Bd{Bj}}}{{Bh{Bf}}}}{B`Bl}0::{{bBn}{{f{{b{c}}}}}{}}0{{{b{C`}}{b{lCb}}}Cd}{cc{}}0{{{b{Cf}}}{{Cj{C`Ch}}}}{{{b{lCf}}}{{Cj{C`Ch}}}}{Cl{{D`{CnA`}}}}{{{b{{n{c}}}}{b{c}}}{{Db{{Af{Ad}}}}}{AhAjAlAn}}{b{{f{{b{c}}}}}{}}0{{}{{Db{Dd}}}}{{}B`}0{{{b{l}}{b{l{Df{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Cj{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{D`{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Dj{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dl{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dn{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Db{c}}}}}{{Cj{Dhe}}}{}{}}1034265{{}c{}}0::::::::{{}Bl};;{{A`ClCl}A`}{{{b{E`}}}{{n{c}}}{AhAjAlAn}}========================{{bBn}{{f{{b{c}}}}}{}}0>>>>>>>>{{bBnBnBn}{{f{{b{c}}}}}{}}0????`??{{bEb}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000022`{{{b{C`}}}Bl}11{c{{Cj{e}}}{}{}}0{{}{{Cj{c}}}{}}0{bEd}044{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{{b{lC`}}{b{Cf}}}{{Cj{BlCh}}}}{{{b{lC`}}{b{lCf}}}{{Cj{BlCh}}}}??{{bEf}{{f{{b{c}}}}}{}}0999999","D":"A@j","p":[[1,"reference"],[6,"Attribute",188],[5,"Painted",189],[5,"Command",190],[6,"Color",191],[0,"mut"],[5,"NaiveAotCache",0],[5,"Program",192],[6,"OptLevel",193],[5,"AotNativeExecutor",194],[5,"Arc",195],[10,"PartialEq",196],[10,"Eq",196],[10,"Hash",197],[10,"Display",198],[1,"usize"],[1,"u64"],[8,"Result",199],[5,"Path",200],[10,"AsRef",201],[1,"bool"],[1,"unit"],[1,"u8"],[5,"StressTestCommand",0],[5,"Formatter",198],[8,"Result",198],[5,"ArgMatches",202],[8,"Error",203],[6,"Result",204],[1,"u32"],[5,"FunctionId",205],[1,"tuple"],[6,"Option",206],[5,"Id",207],[5,"Box",208],[6,"RewriteResult",209],[5,"Vec",210],[5,"VecDeque",211],[5,"OrderedHashMap",212],[5,"NativeContext",213],[6,"Quirk",188],[5,"TypeId",214],[5,"Condition",215]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADcAEQACAAAACAABABQAAwAqAAAALQABADIAAAA1AAMAPAACAEMAAABGAAEASQAAAEwAEABnAAAAawAAAKIAAAClAAUArQAHAA=="}],["cairo_native_test",{"t":"FONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNOONNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOONNNNNNOOONNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","attr","augment_args","augment_args_for_update","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","command","command_for_update","conceal","cyan","deref","deref_mut","dim","drop","fg","filter","fixed","fmt","from","from_arg_matches","from_arg_matches_mut","green","group_id","ignored","include_ignored","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","main","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","opt_level","path","primary","quirk","rapid_blink","red","resetting","rgb","run_mode","single_file","starknet","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","whenever","white","wrap","yellow","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_test"],[102,"cairo_native_test::utils"],[281,"cairo_native_test::utils::test"],[536,"yansi::attr_quirk"],[537,"yansi::paint"],[538,"clap_builder::builder::command"],[539,"yansi::color"],[540,"core::fmt"],[541,"clap_builder::parser::matches::arg_matches"],[542,"clap_builder"],[543,"core::result"],[544,"clap_builder::util::id"],[545,"core::option"],[546,"alloc::boxed"],[547,"cairo_lang_semantic::substitution"],[548,"cairo_lang_utils::ordered_hash_map"],[549,"alloc::collections::vec_deque"],[550,"alloc::vec"],[551,"anyhow"],[552,"core::any"],[553,"yansi::condition"],[554,"dyn_clone::sealed"],[555,"cairo_lang_sierra::program"],[556,"starknet_types_core::felt"],[557,"alloc::vec::into_iter"],[558,"alloc::string"],[559,"cairo_native::values"],[560,"cairo_native::execution_result"],[561,"cairo_lang_runner"],[562,"clap_builder::builder::possible_value"],[563,"cairo_lang_test_plugin"],[564,"scarb_metadata"],[565,"cairo_lang_test_plugin::test_config"],[566,"cairo_lang_sierra::ids"],[567,"cairo_lang_sierra::extensions::modules::gas"]],"i":"`Ad0000000000000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`00000Cj0``0Fd1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Ff0```EbFh2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``{{bd}{{f{{b{c}}}}}{}}{hh}0{{bj}{{f{{b{c}}}}}{}}{b{{f{{b{c}}}}}{}}000{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}2222222222{{}h}033{n{{b{c}}}{}}{n{{b{lc}}}{}}5{nA`}7`{{bAb}{{f{{b{c}}}}}{}}{{{b{Ad}}{b{lAf}}}Ah}{cc{}}{{{b{Aj}}}{{An{AdAl}}}}{{{b{lAj}}}{{An{AdAl}}}};{{}{{Bb{B`}}}}``{{}n}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{}c{}}{b{{f{{b{c}}}}}{}}000{{}{{C`{A`}}}}1111111111111{{bAb}{{f{{b{c}}}}}{}}2222{{bAbAbAb}{{f{{b{c}}}}}{}}33``3{{bCb}{{f{{b{c}}}}}{}}4441```4{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bCd}7{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}{{{b{lAd}}{b{Aj}}}{{An{A`Al}}}}{{{b{lAd}}{b{lAj}}}{{An{A`Al}}}}`<{{bCf}{{f{{b{c}}}}}{}}<<<````{{bCh}A`}{{bd}{{f{{b{c}}}}}{}}0{{bj}{{f{{b{c}}}}}{}}0????????7766????????????????????{{{b{Cj}}}Cj}{{b{b{lc}}}A`{}}{bA`}{b{{f{{b{c}}}}}{}}000{n{{b{c}}}{}}0{n{{b{lc}}}{}}022{nA`}077{{{b{Cl}}{b{Cn}}}{{C`{{b{D`}}}}}}{{bAb}{{f{{b{c}}}}}{}}0{{{b{Cj}}{b{lAf}}}Ah}{{{Dd{Db}}}Df}{cc{}}088{{}n}0{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}2631054{{}c{}}0{b{{f{{b{c}}}}}{}}000{{{b{Dh}}}{{Bn{Db}}}}111111111111111111111111111111>>11111111{{bAbAbAb}{{f{{b{c}}}}}{}}02222`22{{bCb}{{f{{b{c}}}}}{}}0333333{{{b{Dj}}}{{C`{Dl}}}}22`44`{bc{}}{{{b{Cj}}}{{Bb{Dn}}}}{c{{An{e}}}{}{}}0{{}{{An{c}}}{}}0{bCd}099{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{}{{b{{E`{Cj}}}}}}=={{bCf}{{f{{b{c}}}}}{}}0======`````{{bd}{{f{{b{c}}}}}{}}00{{bj}{{f{{b{c}}}}}{}}00????????????555444????????????????????????????????????{n{{b{c}}}{}}00{n{{b{lc}}}{}}00{b{{f{{b{c}}}}}{}}00{{{b{Eb}}n}A`}{nA`}00``555{{EdEfEfDf}{{Bh{Edn}}}}{{{b{Eh}}}{{Bn{{b{Ej}}}}}}{{bAb}{{f{{b{c}}}}}{}}00{cc{}}00`666`{{}n}00{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}41620356203514{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAbAbAb}{{f{{b{c}}}}}{}}00{b{{f{{b{c}}}}}{}}00000`000{{bCb}{{f{{b{c}}}}}{}}00111111111222{{{Bn{{Bh{DfEl}}}}Cl{Bj{En{Bj{F`Fb}}}}Fd}{{C`{Eb}}}}`222{c{{An{e}}}{}{}}00{{}{{An{c}}}{}}00{bCd}00555{b{{b{c}}}{}}00{{{b{l}}}{{b{lc}}}{}}00999{{bCf}{{f{{b{c}}}}}{}}00888888888","D":"C@j","p":[[1,"reference"],[6,"Attribute",536],[5,"Painted",537],[5,"Command",538],[6,"Color",539],[0,"mut"],[1,"usize"],[1,"unit"],[1,"u8"],[5,"Args",0],[5,"Formatter",540],[8,"Result",540],[5,"ArgMatches",541],[8,"Error",542],[6,"Result",543],[5,"Id",544],[6,"Option",545],[5,"Box",546],[6,"RewriteResult",547],[1,"tuple"],[5,"OrderedHashMap",548],[5,"VecDeque",549],[5,"Vec",550],[8,"Result",551],[6,"Quirk",536],[5,"TypeId",552],[5,"Condition",553],[5,"Private",554],[6,"RunMode",102],[5,"Program",555],[1,"str"],[8,"Function",555],[5,"Felt",556],[5,"IntoIter",557],[5,"String",558],[6,"Value",559],[5,"ExecutionResult",560],[6,"RunResultValue",561],[5,"PossibleValue",562],[1,"slice"],[5,"TestsSummary",281],[5,"TestCompilation",563],[1,"bool"],[5,"PackageMetadata",564],[5,"TargetMetadata",564],[5,"TestConfig",565],[5,"FunctionId",566],[6,"CostTokenType",567],[1,"i32"],[5,"RunArgs",102],[6,"TestStatus",281],[5,"TestResult",281]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAUAEAAAABYAjgCPAFIBUwFUAQ==","e":"OzAAAAEAAJMAIAAAAAAABAABAAsAAQAXAAEAGwABAB4AAAAiAAAAJAABACcAAAAqAAcANwAAAFkAAgBdAAUAZwAEAHgAAwCQAAIAlwADAJ0AAQCkAAAAqgAPAO8AAAD9AAAAAAEIAAsBBgAaAQEAMQEFAFsBBQBlAQQAeQEYAOABAAD4AQgABAIIAA=="}],["scarb_native_dump",{"t":"HCPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[181,"scarb_native_dump::utils::test"],[436,"anyhow"],[437,"dyn_clone::sealed"],[438,"yansi::attr_quirk"],[439,"yansi::paint"],[440,"yansi::color"],[441,"cairo_lang_sierra::program"],[442,"core::fmt"],[443,"starknet_types_core::felt"],[444,"alloc::vec::into_iter"],[445,"alloc::string"],[446,"alloc::vec"],[447,"cairo_lang_semantic::substitution"],[448,"core::result"],[449,"core::option"],[450,"cairo_lang_utils::ordered_hash_map"],[451,"alloc::boxed"],[452,"alloc::collections::vec_deque"],[453,"cairo_native::values"],[454,"cairo_native::execution_result"],[455,"cairo_lang_runner"],[456,"clap_builder::builder::possible_value"],[457,"core::any"],[458,"yansi::condition"],[459,"cairo_lang_test_plugin"],[460,"scarb_metadata"],[461,"cairo_lang_test_plugin::test_config"],[462,"cairo_lang_sierra::ids"],[463,"cairo_lang_sierra::extensions::modules::gas"]],"i":"``Ab0``0Ej1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101El0```DhEn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"{{}{{d{b}}}}`````{{fh}b}{{fj}{{l{{f{c}}}}}{}}0{{fn}{{l{{f{c}}}}}{}}0{f{{l{{f{c}}}}}{}}0000000{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}022222222222222222222{{{f{Ab}}}Ab}{{f{f{A`c}}}b{}}{fb}5555{Ad{{f{c}}}{}}0{Ad{{f{A`c}}}{}}077{Adb}099{{{f{Af}}{f{Ah}}}{{d{{f{Aj}}}}}}{{fAl}{{l{{f{c}}}}}{}}0{{{f{Ab}}{f{A`An}}}B`}{{{Bd{Bb}}}Bf}{cc{}}0=={{}Ad}0{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}6510342{{}c{}}0{f{{l{{f{c}}}}}{}}000{{{f{Ch}}}{{Bh{Bb}}}}111111111111111111111111111111>>11111111{{fAlAlAl}{{l{{f{c}}}}}{}}02222`22{{fCj}{{l{{f{c}}}}}{}}0333333{{{f{Cl}}}{{d{Cn}}}}22`44`{fc{}}{{{f{Ab}}}{{Bn{D`}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{fDb}099{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}0{{}{{f{{Dd{Ab}}}}}}=={{fDf}{{l{{f{c}}}}}{}}0======`````{{fj}{{l{{f{c}}}}}{}}00{{fn}{{l{{f{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{f{c}}}{}}00{Ad{{f{A`c}}}{}}00{f{{l{{f{c}}}}}{}}00{{{f{Dh}}Ad}b}{Adb}00``555{{DjDlDlBf}{{C`{DjAd}}}}{{{f{Dn}}}{{Bh{{f{E`}}}}}}{{fAl}{{l{{f{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}63504210245631{{}c{}}00???????????????????????????????????????????????????:::????????????{{fAlAlAl}{{l{{f{c}}}}}{}}00{f{{l{{f{c}}}}}{}}00000`000{{fCj}{{l{{f{c}}}}}{}}00111111111222{{{Bh{{C`{BfEb}}}}Af{Cb{Ed{Cb{EfEh}}}}Ej}{{d{Dh}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{fDb}00555{f{{f{c}}}{}}00{{{f{A`}}}{{f{A`c}}}{}}00999{{fDf}{{l{{f{c}}}}}{}}00888888888","D":"BGn","p":[[1,"unit"],[8,"Result",436],[1,"reference"],[5,"Private",437],[6,"Attribute",438],[5,"Painted",439],[6,"Color",440],[0,"mut"],[6,"RunMode",2],[1,"usize"],[5,"Program",441],[1,"str"],[8,"Function",441],[1,"u8"],[5,"Formatter",442],[8,"Result",442],[5,"Felt",443],[5,"IntoIter",444],[5,"String",445],[5,"Vec",446],[6,"RewriteResult",447],[6,"Result",448],[6,"Option",449],[1,"tuple"],[5,"OrderedHashMap",450],[5,"Box",451],[5,"VecDeque",452],[6,"Value",453],[6,"Quirk",438],[5,"ExecutionResult",454],[6,"RunResultValue",455],[5,"PossibleValue",456],[5,"TypeId",457],[1,"slice"],[5,"Condition",458],[5,"TestsSummary",181],[5,"TestCompilation",459],[1,"bool"],[5,"PackageMetadata",460],[5,"TargetMetadata",460],[5,"TestConfig",461],[5,"FunctionId",462],[6,"CostTokenType",463],[1,"i32"],[5,"RunArgs",2],[6,"TestStatus",181],[5,"TestResult",181]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAQAEAAAACoAKwDuAO8A8AA=","e":"OzAAAAEAAHUAFAAAAAAAAgAFABQAAwAsAAIAMwADADkAAQBAAAAARgAPAIsAAACZAAAAnAAIAKcABgC2AAEAzQAFAPcABQABAQQAFQEYAHwBAACUAQgAoAEIAA=="}],["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNONNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOONNNONNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","","attr","","","augment_args","augment_args_for_update","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize_test_compilation","dim","","","drop","","","fg","","","filter","fixed","","","fmt","","from","","","from_arg_matches","from_arg_matches_mut","green","","","group_id","ignored","include_ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","main","mask","","","matches","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","opt_level","packages_filter","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_mode","seen","strike","","","test_kind","to_owned","","to_possible_value","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","","","whenever","","","white","","","wrap","","","yellow","","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_test"],[284,"scarb_native_test::utils"],[463,"scarb_native_test::utils::test"],[718,"dyn_clone::sealed"],[719,"yansi::attr_quirk"],[720,"yansi::paint"],[721,"clap_builder::builder::command"],[722,"yansi::color"],[723,"std::path"],[724,"alloc::string"],[725,"cairo_lang_test_plugin"],[726,"anyhow"],[727,"core::fmt"],[728,"clap_builder::parser::matches::arg_matches"],[729,"clap_builder"],[730,"core::result"],[731,"clap_builder::util::id"],[732,"core::option"],[733,"cairo_lang_semantic::substitution"],[734,"cairo_lang_utils::ordered_hash_map"],[735,"alloc::vec"],[736,"alloc::boxed"],[737,"alloc::collections::vec_deque"],[738,"clap_builder::builder::possible_value"],[739,"core::any"],[740,"yansi::condition"],[741,"cairo_lang_sierra::program"],[742,"starknet_types_core::felt"],[743,"alloc::vec::into_iter"],[744,"cairo_native::values"],[745,"cairo_native::execution_result"],[746,"cairo_lang_runner"],[747,"scarb_metadata"],[748,"cairo_lang_test_plugin::test_config"],[749,"cairo_lang_sierra::ids"],[750,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ad`0``0Ab101Af111201201201201201201201201201201201201201201201201201212121112012020120120`12012012011201212011120111120111111122222220000000120120120120120`12021201201201201201201201201201201201201201201201201201201201201112012012012012012010120112212012012012012012011`20120120120120120Dl0``0Fj1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fl0```ElFn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}00{ll}0{{bn}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000000{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00222222222222222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}0777777{{}Ad}{{}Af}{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{{{b{Aj}}Al}{{B`{An}}}}<<<{Ahf}00>>>`{{bBb}{{j{{b{c}}}}}{}}00{{{b{Ab}}{b{A`Bd}}}Bf}{{{b{Ad}}{b{A`Bd}}}Bf}{cc{}}00{{{b{Bh}}}{{Bl{AbBj}}}}{{{b{A`Bh}}}{{Bl{AbBj}}}}{b{{j{{b{c}}}}}{}}00{{}{{C`{Bn}}}}``{{}Ah}00{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}64105321623504{{}c{}}00::::::::::::{{}{{B`{f}}}};;;{{{b{Ad}}{b{Cn}}}D`}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{{bBb}{{j{{b{c}}}}}{}}00============{{bBbBbBb}{{j{{b{c}}}}}{}}00>>>>>>``>>>{{bDb}{{j{{b{c}}}}}{}}00?????????111``???`{bc{}}0{{{b{Ad}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{A`Ab}}{b{Bh}}}{{Bl{fBj}}}}{{{b{A`Ab}}{b{A`Bh}}}{{Bl{fBj}}}}`{{}{{b{{Dh{Ad}}}}}}{{{b{A`Af}}AlAl}D`}{{}c{}}00{{bDj}{{j{{b{c}}}}}{}}00888888888````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0;;;;;;;;::99;;;;;;;;;;;;;;;;;;;;{{{b{Dl}}}Dl}{{b{b{A`c}}}f{}}{bf}>>>>{Ah{{b{c}}}{}}0{Ah{{b{A`c}}}{}}0{b{{j{{b{c}}}}}{}}0{Ahf}077{{{b{Dn}}{b{Cn}}}{{B`{{b{E`}}}}}}{{bBb}{{j{{b{c}}}}}{}}0{{{b{Dl}}{b{A`Bd}}}Bf}{{{Ed{Eb}}}Al}{cc{}}066{{}Ah}0{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}3260145{{}c{}}0????{{{b{Ef}}}{{Cf{Eb}}}}{b{{j{{b{c}}}}}{}}00000000000000000000000000000>>00000000{{bBbBbBb}{{j{{b{c}}}}}{}}01111`11{{bDb}{{j{{b{c}}}}}{}}0222222{{{b{Eh}}}{{B`{Ej}}}}22`33`{bc{}}{{{b{Dl}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{bDf}088{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Dh{Dl}}}}}}=={{bDj}{{j{{b{c}}}}}{}}0<<<<<<`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00>>>>>>>>>>>>555444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{El}}Ah}f}{Ahf}00``555{{AnD`D`Al}{{Cl{AnAh}}}}{{{b{En}}}{{Cf{{b{F`}}}}}}{{bBb}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ah}00{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}63215044015632{{}c{}}00???????????????????????????????????????????????????:::????????????{{bBbBbBb}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bDb}{{j{{b{c}}}}}{}}00111111111222{{{Cf{{Cl{AlFb}}}}Dn{Cd{Fd{Cd{FfFh}}}}Fj}{{B`{El}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bDj}{{j{{b{c}}}}}{}}00888888888","D":"COj","p":[[1,"reference"],[5,"Private",718],[1,"unit"],[6,"Attribute",719],[5,"Painted",720],[5,"Command",721],[6,"Color",722],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",723],[5,"String",724],[5,"TestCompilation",725],[8,"Result",726],[1,"u8"],[5,"Formatter",727],[8,"Result",727],[5,"ArgMatches",728],[8,"Error",729],[6,"Result",730],[5,"Id",731],[6,"Option",732],[6,"RewriteResult",733],[5,"OrderedHashMap",734],[5,"Vec",735],[5,"Box",736],[5,"VecDeque",737],[1,"tuple"],[1,"str"],[1,"bool"],[6,"Quirk",719],[5,"PossibleValue",738],[5,"TypeId",739],[1,"slice"],[5,"Condition",740],[6,"RunMode",284],[5,"Program",741],[8,"Function",741],[5,"Felt",742],[5,"IntoIter",743],[6,"Value",744],[5,"ExecutionResult",745],[6,"RunResultValue",746],[5,"TestsSummary",463],[5,"PackageMetadata",747],[5,"TargetMetadata",747],[5,"TestConfig",748],[5,"FunctionId",749],[6,"CostTokenType",750],[1,"i32"],[5,"RunArgs",284],[6,"TestStatus",463],[5,"TestResult",463]],"r":[],"b":[],"c":"OzAAAAEAAAcAAwA+AAIARAEBAAgCAgA=","e":"OzAAAAEAANEAJQAAAAEAAwAFAAwAAQAdAAUAQQAHAE8ACABbAAIAZQABAGoAAQBvAAAAcgAXAJkAAACdAAAA2wAAAO8AAAD0AAsAAwEJAA4BAgAdAQQALgEDAEYBAgBNAQMAUwEBAFoBAABgAQ8ApQEAALMBAAC2AQgAwQEGANABAQDnAQUAEQIFABsCBAAvAhgAlgIAAK4CCAC6AggA"}]]'));
+var searchIndex = new Map(JSON.parse('[["cairo_native",{"t":"PPPPPPPPPPPPPPGPPPPPPPPPPPPPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNHNNCNNCNNNNNNNNCNNNNNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCHQQHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCNNNNNNNNNNNNNNNNCNNNNNNNNNNOOOOOOOOOOOPEPEGCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHCCCCCCCCPPPPPGPPPGPPPPPPPPPPPPPPPPPPPPIPPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNFFFNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNOONNNOONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNCNNNNNNNNNNNNNNNNNNNCNNNNNCCCNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNCNCNNNNNNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNMNMNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOOOONNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNOONNNNNNNNNNNNMNMNMNMNMNMNMNMNMNMNMNONNNNNNNNNMNOOOMNMNNNNNNNNNNNNNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNFFFNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHNNNNNNNNNNNNNNNNHOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNFJFJSNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNOHNNHHNNNNNNNNNNONNNNNHHHNNHHHNNNNNNNHHNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOONNNNNNNNHNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNH","n":["Aggressive","Array","BoundedInt","Bytes31","Default","EcPoint","EcState","Enum","Felt252","Felt252Dict","IntRange","Less","None","Null","OptLevel","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","Value","__clone_box","","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","clone","","clone_into","","clone_to_uninit","","cmp","compare","compile","conceal","","context","cyan","","debug","default","deref","","deref_mut","","deserialize","dim","","docs","drop","","eq","","equivalent","","","","","","","","error","execution_result","executor","fg","","fixed","","fmt","","from","","","","","","","","","","","","","","","","","","green","","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","metadata","module","module_to_object","native_assert","native_panic","object_to_shared_lib","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","partial_cmp","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","serialize","starknet","starknet_stub","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","utils","vzip","","whenever","","white","","wrap","","yellow","","debug_name","","","fields","range","tag","value","","","x","y","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","","","green","init","internal_rewrite","","","","","","","into","invert","italic","jit","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AotProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","JitProgramCache","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile_and_insert","conceal","context","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeContext","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","compile","conceal","context","cyan","default","deref","deref_mut","dim","drop","eq","equivalent","","","","fg","fixed","fmt","from","green","init","initialize_mlir","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","libfunc_to_name","section01","section02","section03","section04","section05","section06","section07","section08","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","IntegerConversion","IntegerLikeTypeExpected","IoError","LLVMCompileError","LayoutError","LayoutErrorPolyfill","LibraryLoadError","LinkError","MissingBuiltinCostsSymbol","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","NativeAssert","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SelectorNotFound","SerdeJsonError","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","fg","","","fixed","","","fmt","","","","","","from","","","","","","","","","","","","","","","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","make_missing_parameter","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","panic","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","source","strike","","","to_smolstr","","","to_string","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","range","value","ranges","NativeAssertError","ToNativeAssertError","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","to_native_assert_error","to_smolstr","to_string","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","","","attr","","","bg","","","bitwise","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","builtin_stats","circuit_add","circuit_mul","clear","","","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize","","","dim","","","drop","","","ec_op","eq","","","equivalent","","","","","","","","","","","","error_msg","failure_flag","fg","","","fixed","","","fmt","","","from","","","from_execution_result","green","","","hash","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","partial_cmp","","pedersen","poseidon","primary","","","quirk","","","range_check","range_check_96","rapid_blink","","","red","","","remaining_gas","","resetting","","","return_value","return_values","rgb","","","segment_arena","serialize","","","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","AotContractExecutor","AotNativeExecutor","JitNativeExecutor","__clone_box","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","clone_into","clone_to_uninit","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","drop","","","","fg","","","find_function_ptr","","","find_symbol_ptr","","","fixed","","","fmt","","","from","","","from_native_module","","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","invoke_contract_dynamic","","invoke_dynamic","","invoke_dynamic_with_syscall_handler","","italic","","","linger","","","load","magenta","","","mask","","","module","new","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","program_registry","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run","save","strike","","","to_owned","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","MetadataStorage","attr","auto_breakpoint","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_utils","default","deref","deref_mut","dim","drop","drop_overrides","dup_overrides","enum_snapshot_variants","fg","fixed","fmt","from","gas","get","get_mut","get_or_insert_with","green","init","insert","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc_bindings","red","remove","resetting","rgb","runtime_bindings","strike","tail_recursion","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","","add_event","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","cyan","","default","deref","","deref_mut","","dim","","drop","","eq","equivalent","","","","fg","","fixed","","fmt","","from","","green","","has_event","hash","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","mask","","maybe_breakpoint","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","type_id","variant_idx","DebugUtils","attr","bg","black","blink","blue","bold","borrow","borrow_mut","breakpoint_marker","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","debug_breakpoint_trap","debug_print","default","deref","deref_mut","dim","drop","dump_mem","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","quirk","rapid_blink","red","register_impls","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DropOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","DupOverridesMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","EnumSnapshotVariantsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dim","drop","fg","fixed","from","get_variants","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","set_mapping","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","","","ap_change_info","attr","","","","bg","","","","black","","","","blink","","","","blue","","","","bold","","","","borrow","","","","borrow_mut","","","","bright","","","","bright_black","","","","bright_blue","","","","bright_cyan","","","","bright_green","","","","bright_magenta","","","","bright_red","","","","bright_white","","","","bright_yellow","","","","clear","","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","","cyan","","","","default","","deref","","","","deref_mut","","","","dim","","","","drop","","","","eq","","","equivalent","","","","","","","","","","","","fg","","","","fixed","","","","fmt","","","","","from","","","","","","function_set_costs","gas_info","get_gas_cost_for_statement_and_cost_token_type","get_gas_costs_for_statement","get_initial_available_gas","green","","","","hash","init","","","","initial_required_gas","initial_required_gas_for_entry_points","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","invert","","","","italic","","","","linear_ap_change_solver","linear_gas_solver","linger","","","","magenta","","","","mask","","","","new","on_black","","","","on_blue","","","","on_bright","","","","on_bright_black","","","","on_bright_blue","","","","on_bright_cyan","","","","on_bright_green","","","","on_bright_magenta","","","","on_bright_red","","","","on_bright_white","","","","on_bright_yellow","","","","on_cyan","","","","on_fixed","","","","on_green","","","","on_magenta","","","","on_primary","","","","on_red","","","","on_rgb","","","","on_white","","","","on_yellow","","","","primary","","","","quirk","","","","rapid_blink","","","","red","","","","resetting","","","","rgb","","","","source","strike","","","","to_owned","","","to_smolstr","to_string","try_from","","","","try_into","","","","type_id","","","","underline","","","","upcast","","","","upcast_mut","","","","vzip","","","","whenever","","","","white","","","","wrap","","","","yellow","","","","gas","ReallocBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","free","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","realloc","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","RuntimeBindingsMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","default","deref","deref_mut","dict_drop","dict_dup","dict_gas_refund","dict_get","dict_insert","dict_new","dim","drop","fg","fixed","fmt","from","get_gas_builtin","green","init","internal_rewrite","","","","","","","into","invert","italic","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_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","linger","magenta","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","red","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vtable_cheatcode","vzip","whenever","white","wrap","yellow","TailRecursionMeta","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","depth_counter","deref","deref_mut","dim","drop","fg","fixed","fmt","from","green","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","quirk","rapid_blink","recursion_target","red","resetting","return_target","rgb","set_return_target","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","NativeModule","attr","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","conceal","cyan","deref","deref_mut","dim","drop","fg","fixed","fmt","from","get_metadata","green","init","insert_metadata","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","mask","metadata","module","new","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","primary","program_registry","quirk","rapid_blink","red","remove_metadata","resetting","rgb","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","vzip","whenever","white","wrap","yellow","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","","","","","","","","","","account_contract_address","","account_deployment_data","attr","","","","","","","","","","","","bg","","","","","","","","","","","","black","","","","","","","","","","","","blink","","","","","","","","","","","","block_info","","block_number","block_timestamp","blue","","","","","","","","","","","","bold","","","","","","","","","","","","borrow","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","bright","","","","","","","","","","","","bright_black","","","","","","","","","","","","bright_blue","","","","","","","","","","","","bright_cyan","","","","","","","","","","","","bright_green","","","","","","","","","","","","bright_magenta","","","","","","","","","","","","bright_red","","","","","","","","","","","","bright_white","","","","","","","","","","","","bright_yellow","","","","","","","","","","","","cairo_native__vtable_cheatcode","call_contract","","caller_address","","capacity","chain_id","","cheatcode","clear","","","","","","","","","","","","clone","","","","","","","","","","clone_into","","","","","","","","","","clone_to_uninit","","","","","","","","","","cmp","","","","","","","compare","","","","","","","conceal","","","","","","","","","","","","contract_address","","cyan","","","","","","","","","","","","default","","","deploy","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","dim","","","","","","","","","","","","drop","","","","","","","","","","","","emit_event","","entry_point_selector","","eq","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","fee_data_availability_mode","fg","","","","","","","","","","","","fixed","","","","","","","","","","","","fmt","","","","","","","","","","","from","","","","","","","","","","","","get_block_hash","","get_class_hash_at","","get_execution_info","","get_execution_info_v2","","green","","","","","","","","","","","","hash","","","","","","","","","hi","init","","","","","","","","","","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into","","","","","","","","","","","","invert","","","","","","","","","","","","is_infinity","","italic","","","","","","","","","","","","keccak","","library_call","","linger","","","","","","","","","","","","lo","magenta","","","","","","","","","","","","mask","","","","","","","","","","","","max_amount","max_fee","","max_price_per_unit","new","","nonce","","nonce_data_availability_mode","on_black","","","","","","","","","","","","on_blue","","","","","","","","","","","","on_bright","","","","","","","","","","","","on_bright_black","","","","","","","","","","","","on_bright_blue","","","","","","","","","","","","on_bright_cyan","","","","","","","","","","","","on_bright_green","","","","","","","","","","","","on_bright_magenta","","","","","","","","","","","","on_bright_red","","","","","","","","","","","","on_bright_white","","","","","","","","","","","","on_bright_yellow","","","","","","","","","","","","on_cyan","","","","","","","","","","","","on_fixed","","","","","","","","","","","","on_green","","","","","","","","","","","","on_magenta","","","","","","","","","","","","on_primary","","","","","","","","","","","","on_red","","","","","","","","","","","","on_rgb","","","","","","","","","","","","on_white","","","","","","","","","","","","on_yellow","","","","","","","","","","","","partial_cmp","","","","","","","paymaster_data","primary","","","","","","","","","","","","ptr","quirk","","","","","","","","","","","","rapid_blink","","","","","","","","","","","","red","","","","","","","","","","","","replace_class","","resetting","","","","","","","","","","","","resource","resource_bounds","rgb","","","","","","","","","","","","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","","sequencer_address","serialize","","","","","","","","","sha256_process_block","","signature","","since","storage_read","","storage_write","","strike","","","","","","","","","","","","tip","to_owned","","","","","","","","","","transaction_hash","","try_from","","","","","","","","","","","","try_into","","","","","","","","","","","","tx_info","","type_id","","","","","","","","","","","","underline","","","","","","","","","","","","until","upcast","","","","","","","","","","","","upcast_mut","","","","","","","","","","","","version","","vzip","","","","","","","","","","","","whenever","","","","","","","","","","","","white","","","","","","","","","","","","wrap","","","","","","","","","","","","x","","y","","yellow","","","","","","","","","","","","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","","","attr","","","bg","","","big4int_to_u256","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","call_contract","cheatcode","clear","","","clone","","","clone_into","","","clone_to_uninit","","","conceal","","","cyan","","","data","decode_felts_as_str","default","","deploy","deref","","","deref_mut","","","dim","","","drop","","","emit_event","encode_str_as_felts","events","","execution_info","fg","","","fixed","","","fmt","","","from","","","get_block_hash","get_class_hash_at","get_execution_info","get_execution_info_v2","green","","","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","keccak","keys","l2_to_l1_messages","library_call","linger","","","logs","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","primary","","","quirk","","","rapid_blink","","","red","","","replace_class","resetting","","","rgb","","","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","sha256_process_block","storage","storage_read","storage_write","strike","","","to_owned","","","try_from","","","try_into","","","type_id","","","u256_to_biguint","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","","","BuiltinCosts","HALF_PRIME","LayoutError","PRIME","SHARED_LIBRARY_EXT","__clone_box","","add_mod","attr","","bg","","bitwise","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cairo_to_sierra","clear","","clone","","clone_into","","clone_to_uninit","","conceal","","const","create_engine","cyan","","debug_with","decode_error_message","default","deref","","deref_mut","","deserialize","dim","","drop","","ecop","eq","equivalent","","","","felt252_bigint","felt252_short_str","felt252_str","fg","","find_entry_point","find_entry_point_by_idx","find_function_id","fixed","","fmt","","","from","","generate_function_name","get_integer_layout","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","layout_repeat","linger","","magenta","","mask","","mem_tracing","mul_mod","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","padding_needed_for","pedersen","poseidon","primary","","quirk","","rapid_blink","","red","","register_runtime_symbols","resetting","","rgb","","run_pass_manager","serialize","strike","","to_owned","","to_smolstr","to_string","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","vzip","","whenever","","white","","wrap","","yellow","","report_stats"],"q":[[0,"cairo_native"],[251,"cairo_native::Value"],[262,"cairo_native::cache"],[352,"cairo_native::cache::aot"],[437,"cairo_native::cache::jit"],[523,"cairo_native::context"],[615,"cairo_native::debug"],[616,"cairo_native::docs"],[624,"cairo_native::error"],[929,"cairo_native::error::CompilerError"],[931,"cairo_native::error::SierraAssertError"],[932,"cairo_native::error::panic"],[1020,"cairo_native::execution_result"],[1329,"cairo_native::executor"],[1602,"cairo_native::metadata"],[1700,"cairo_native::metadata::auto_breakpoint"],[1885,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[1887,"cairo_native::metadata::debug_utils"],[1982,"cairo_native::metadata::drop_overrides"],[2065,"cairo_native::metadata::dup_overrides"],[2148,"cairo_native::metadata::enum_snapshot_variants"],[2232,"cairo_native::metadata::gas"],[2613,"cairo_native::metadata::gas::GasMetadataError"],[2614,"cairo_native::metadata::realloc_bindings"],[2699,"cairo_native::metadata::runtime_bindings"],[2799,"cairo_native::metadata::tail_recursion"],[2886,"cairo_native::module"],[2975,"cairo_native::starknet"],[4209,"cairo_native::starknet_stub"],[4509,"cairo_native::utils"],[4721,"cairo_native::utils::mem_tracing"],[4722,"dyn_clone::sealed"],[4723,"yansi::attr_quirk"],[4724,"yansi::paint"],[4725,"yansi::color"],[4726,"cairo_native::ffi"],[4727,"cairo_native::values"],[4728,"core::cmp"],[4729,"melior::context"],[4730,"melior::ir::module"],[4731,"cairo_lang_sierra::program"],[4732,"cairo_lang_sierra::extensions::core"],[4733,"cairo_lang_sierra::program_registry"],[4734,"melior::ir::attribute"],[4735,"core::result"],[4736,"serde::de"],[4737,"core::fmt"],[4738,"core::convert"],[4739,"starknet_types_core::felt"],[4740,"core::clone"],[4741,"alloc::vec"],[4742,"core::hash"],[4743,"alloc::boxed"],[4744,"cairo_lang_semantic::substitution"],[4745,"alloc::collections::vec_deque"],[4746,"core::option"],[4747,"cairo_lang_utils::ordered_hash_map"],[4748,"std::path"],[4749,"serde::ser"],[4750,"core::any"],[4751,"yansi::condition"],[4752,"cairo_native::executor::aot"],[4753,"alloc::sync"],[4754,"cairo_native::executor::jit"],[4755,"core::alloc::layout"],[4756,"melior::error"],[4757,"serde_json::error"],[4758,"libloading::error"],[4759,"std::io::error"],[4760,"cairo_lang_sierra::edit_state"],[4761,"core::num::error"],[4762,"cairo_lang_sierra::ids"],[4763,"core::error"],[4764,"smol_str"],[4765,"alloc::string"],[4766,"cairo_native::executor::contract"],[4767,"core::ffi"],[4768,"libloading::safe"],[4769,"cairo_lang_starknet_classes::contract_class"],[4770,"core::ops::function"],[4771,"melior::ir::block"],[4772,"melior::ir::location"],[4773,"melior::ir::value"],[4774,"melior::execution_engine"],[4775,"cairo_lang_sierra_ap_change"],[4776,"cairo_lang_sierra_gas"],[4777,"cairo_lang_sierra::extensions::modules::gas"],[4778,"alloc::collections::btree::map"],[4779,"melior::ir::operation"],[4780,"ark_ff::biginteger"],[4781,"num_bigint::biguint"],[4782,"anyhow"],[4783,"num_bigint::bigint"],[4784,"alloc::borrow"],[4785,"cairo_native::compiler"]],"i":"A`Ab001000000110`0000000000000`101010101010101010101010101010101010`1010101011`10`10`11010010`101011110000```1010101110000000000000001011011111110000000101010101010``````101010101010101010101010101010101010101011010101010100``1010101010101010`1010101010ABjABlABn2AC`2210ACb0Fn`0```000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`Gj00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Gh000000000000000000000000000000000000000000000000000000000000000000000000000000000000`H`0000000000000000000000000000000000000`0000000000000000000000000000000000000000000000000000`````````Hl0Hn1Bh`00Fb`13111111111111110113`111`1113213213213213213213213213213213213213213213213213213213213213213213213213213211332211111111111111321321321111111333333322222221321321321321321132132132132132132132132132132132132132132132132132132132132132`1321321321321321321132132132132132132132132132132132132132132ACd0ACf``In00000000000000000000000000000000000000000000000000000000000000000000000Jn1111111111111```K`KbKd210210221021021021021021021021021021021021021021021012221021021021020202102102021021021021021022102222111100000021021021021002102021022222221111111000000021021021021021021021021021021021021021021021021021021021021021021021021021021020222102102221021010210102102210210210210210210210210210210210210210210```KfHbGl210210210210210210210210210210210210210210210210210222210210210210210210221021021021021021021010210211111110000000222222210210210101010210221021021021021021021021021021021021021021021021021021021021021021021021021102102102102102221022102102102102102102102102102102102`Bb`0000000000000000000`00000```0000`0000000000000000000000000000000000000000000`0000`0`00000000000``M`0Ln010101010101010101010101010101010101010101010100101010101111110101010100110111111100000001010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010ACh0`Mf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ml000000000000000000000000000000000000000000000000000000000000000000000000000000000`Mn000000000000000000000000000000000000000000000000000000000000000000000000000000000`N`0000000000000000000000000000000000000000000000000000000000000000000000000000000000Ij0````0L`NbHd22103210321032103210321032103210321032103210321032103210321032103210321032102102102103210320210321032103210321322221111333321032103210332103330222221031210322222222211111110000000333333321032103210300210321032103221032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103321032103321032103210321032103210321032103210321032103ACj`Nn00000000000000000000000000000000000000000000000000000000000000000000000000000000000`Ob00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Of0000000000000000000000000000000000000000000000000000000000000000000000000000000000000`Hf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000```On```0`````````OjA@bA@dA@fA@hA@jA@lA@nAA`AAb525A@`Ol;:9876543210;:9876543210;:9876543210;:98765432985510;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:9876543210;:98765432`Kl2:9185021<;:9876543<;:9876543<;:9876543<;:9876543;:98765;:9876521<;:9876543:921<;:9876543;430221<;:987654321<;:9876543;:987654321<;:987654321<;:987654302:9;:9876543;;;;::::9999888877776666555544443333821<;:987654321<;:98765431<;:987654321<;:98765430202020221<;:9876543;:9876543;21<;:987654322222221111111<<<<<<<;;;;;;;:::::::999999988888887777777666666655555554444444333333321<;:987654321<;:98765434321<;:9876543020221<;:9876543;21<;:987654321<;:987654378574385821<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:987654321<;:9876543;:98765821<;:9876543121<;:987654321<;:987654321<;:98765430221<;:98765437821<;:987654302020202020202020202026;:987654302851020221<;:98765438<;:98765438521<;:987654321<;:9876543:921<;:987654321<;:9876543121<;:987654321<;:98765438521<;:987654321<;:987654321<;:987654321<;:9876543434321<;:9876543```AAfAAhAAj210210`210210210210210210210210210210210210210210210222102102102102102101`2022102102102102`2022102102102102222210210222222211111110000000210210210210221022102102102102102102102102102102102102102102102102102102102102102102102102102102210210222222222222222210210210210210`210210210210210210210210`````LdJd110101101010101010101010101010101010`10101010101`10``1101011010100000```10```1010010``101011111110000000101010`101010`11010101010101010101010101010101010101010`1110101010`1010`11010001010101010101010101010`","f":"`````````````````````````````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0222222222222222222`22{{{b{A`}}}A`}{{{b{Ab}}}Ab}{{b{b{nc}}}f{}}0{bf}0{{{b{A`}}{b{A`}}}Ad}{{b{b{c}}}Ad{}}{{{b{Af}}{b{Ah}}{b{Aj}}{b{{B`{AlAn}}}}{b{nBb}}BdBf}{{Bj{fBh}}}}99`99`{{}A`}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ab}}}Bn}==`{Blf}0{{{b{A`}}{b{A`}}}Bf}{{{b{Ab}}{b{Ab}}}Bf}{{b{b{c}}}Bf{}}0000000```{{bl}{{j{{b{c}}}}}{}}0{{bC`}{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nCb}}}Cd}{{{b{Ab}}{b{nCb}}}Cd}{C`A`}{BlA`}{cc{}}{CfAb}1{ChAb}{CjAb}{{{Cl{c}}}Ab{{Cn{Ab}}}}{D`Ab}{DbAb}{{{b{{Dd{c}}}}}Ab{{Cn{Ab}}Df}}{C`Ab}{DhAb}{DjAb}{DlAb}{DnAb}{E`Ab}{{{Eb{c}}}Ab{{Cn{Ab}}}}{b{{j{{b{c}}}}}{}}0{{{b{A`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}4312650{{}c{}}0::::::::::``{{{b{Ah}}A`}{{Fb{{Eb{C`}}}}}}``{{{b{{Dd{C`}}}}{b{Fd}}}{{Fb{f}}}}<<<<<<<<<<<<<<<<<<<<<<<<{{bC`}{{j{{b{c}}}}}{}}0========{{bC`C`C`}{{j{{b{c}}}}}{}}0>>>>{{{b{A`}}{b{A`}}}{{El{Ad}}}}??{{bFf}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000033{{{b{Ab}}c}BjFh}``11{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}055{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0`>>{{bFl}{{j{{b{c}}}}}{}}0888888`````````````````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{{Fn{c}}}}{b{nCb}}}Cd{G`GbGdGf}}{{{Gh{c}}}{{Fn{c}}}{G`GbGd}}{{{Gj{c}}}{{Fn{c}}}{G`GbGd}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99`999999999999999>9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{n{Gj{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Gl}}}}}{G`GbGd}}33{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gj{c}}}}{b{nCb}}}Cd{G`GbGd}}{cc{}}{{{b{{Gj{c}}}}{b{c}}}{{El{{Gn{Gl}}}}}{G`GbGd}}:{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{H`}}}{{Gj{c}}}{G`GbGd}}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}};;;;43;;;;;;;;;;{{{b{n{Gh{c}}}}c{b{Aj}}A`}{{Fb{{Gn{Hb}}}}}{GbGdG`}}<{{{b{{Gh{c}}}}}{{b{H`}}}{GbGdG`}}={Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}?{Blf}5{{bC`}{{j{{b{c}}}}}{}}{{{b{{Gh{c}}}}{b{nCb}}}Cd{GbGdG`}}{cc{}}{{{b{{Gh{c}}}}{b{c}}}{{El{{Gn{Hb}}}}}{GbGdG`}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{H`}}}{{Gh{c}}}{GbGdG`}}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<<<1<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}2222542222222222{{{b{H`}}{b{Aj}}Bf{El{Hd}}}{{Bj{HfBh}}}}3{{{b{H`}}}{{b{Af}}}}4{{}H`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}{{{b{H`}}{b{H`}}}Bf}{{b{b{c}}}Bf{}}0008{{bC`}{{j{{b{c}}}}}{}}{{{b{H`}}{b{nCb}}}Cd}{cc{}}={{}Bl}{{}Af}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}H`}111111111111>1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}6{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}9{{bFl}{{j{{b{c}}}}}{}}999{{{b{Hh}}}{{b{Hj}}}}`````````````````````````````````````````````{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<555444<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00>>>{Blf}00333{{bC`}{{j{{b{c}}}}}{}}00{{{b{Bh}}{b{nCb}}}Cd}0{{{b{Hl}}{b{nCb}}}Cd}0{{{b{Hn}}{b{nCb}}}Cd}0{I`Bh}{IbBh}{IdBh}{IfBh}{IhBh}{IjBh}{IlBh}{cc{}}{HnBh}{InBh}{HlBh}{J`Bh}{{{Ef{Jb}}}Bh}{JdBh}66{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}65432103240156{{}c{}}00999999999999{{{b{Jf}}}Bh}:::::::::::::::::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}00;;;;;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}00<<<<<<`<<<{{bFf}{{j{{b{c}}}}}{}}00=========111{{{b{Bh}}}{{El{{b{Jh}}}}}}>>>{bJj}00{bJl}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00==={{bFl}{{j{{b{c}}}}}{}}00333333333`````{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{In}}{b{nCb}}}Cd}0{cc{}};{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{JlIn}111111111111=1111{{bC`C`C`}{{j{{b{c}}}}}{}}222{{bFf}{{j{{b{c}}}}}{}}33313{{Jn{b{Hj}}}{{Fb{c}}}{}}{bJj}{bJl}{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}9{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}<<<```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00`????????????555444???????????????????????????```???{{{b{K`}}}K`}{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{b{b{nc}}}f{}}00{bf}00{{{b{K`}}{b{K`}}}Ad}{{{b{Kd}}{b{Kd}}}Ad}{{b{b{c}}}Ad{}}0{b{{j{{b{c}}}}}{}}00000{{}K`}{{}Kd}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00{c{{Bj{K`}}}Bn}{c{{Bj{Kb}}}Bn}{c{{Bj{Kd}}}Bn}777{Blf}00`{{{b{K`}}{b{K`}}}Bf}{{{b{Kb}}{b{Kb}}}Bf}{{{b{Kd}}{b{Kd}}}Bf}{{b{b{c}}}Bf{}}00000000000``{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nCb}}}Cd}{{{b{Kb}}{b{nCb}}}Cd}{{{b{Kd}}{b{nCb}}}Cd}{cc{}}00{Kb{{Bj{KdBh}}}}{b{{j{{b{c}}}}}{}}00{{{b{K`}}{b{nc}}}fEd}{{{b{Kd}}{b{nc}}}fEd}{{}Bl}00{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}50124360634215{{}c{}}00;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00======{{{b{K`}}{b{K`}}}{{El{Ad}}}}{{{b{Kd}}{b{Kd}}}{{El{Ad}}}}``???{{bFf}{{j{{b{c}}}}}{}}00``{b{{j{{b{c}}}}}{}}00000``000``444`{{{b{K`}}c}BjFh}{{{b{Kb}}c}BjFh}{{{b{Kd}}c}BjFh}333{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00777{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00???{{bFl}{{j{{b{c}}}}}{}}00:::::::::```{{bd}f}{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00============555444=============================={{{b{Kf}}}Kf}{{b{b{nc}}}f{}}{bf}{b{{j{{b{c}}}}}{}}00000{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00222{Blf}00{{{b{nKf}}}f}888{{{b{Hb}}{b{Kh}}}Kj}{{{b{Gl}}{b{Kh}}}{{Bj{KjBh}}}}{{{b{Kf}}{b{Kh}}Bf}{{Fb{Kj}}}}{{{b{Hb}}{b{Hj}}}{{El{Kj}}}}{{{b{Gl}}{b{Hj}}}{{El{Kj}}}}{{{b{Kf}}{b{Hj}}}{{El{Kj}}}}{{bC`}{{j{{b{c}}}}}{}}00{{{b{Hb}}{b{nCb}}}Cd}{{{b{Gl}}{b{nCb}}}Cd}{{{b{Kf}}{b{nCb}}}Cd}{cc{}}00{{HfA`}{{Bj{HbBh}}}}{{HfA`}{{Bj{GlBh}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}32106450321564{{}c{}}00999{{{b{Hb}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{D`}}}}{El{Dl}}c}{{Bj{KdBh}}}Kl}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}}{{Bj{KbBh}}}}{{{b{Hb}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}{{{b{Gl}}{b{Kh}}{b{{Dd{Ab}}}}{El{Dl}}c}{{Bj{KbBh}}}Kl}??????{{{b{Fd}}}{{Fb{Kf}}}}{b{{j{{b{c}}}}}{}}00000{{{b{Hb}}}{{b{Ah}}}}{{Kn{B`{AlAn}}L`}Gl}{{{b{Aj}}{b{Lb}}A`}{{Fb{Kf}}}}333333333333333333333333333333333333{{bC`}{{j{{b{c}}}}}{}}00444444444444{{bC`C`C`}{{j{{b{c}}}}}{}}00555555555{{{b{Hb}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}00777777777222{{{b{Kf}}D`{b{{Dd{D`}}}}Dl{El{Ld}}c}{{Fb{Kd}}}Kl}{{{b{nKf}}c}{{Fb{f}}}{{Lf{Fd}}}}999{bc{}}{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00==={b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000`{{bh}{{j{{b{c}}}}}{}}`{{bl}{{j{{b{c}}}}}{}}222265222222222222`{{}Bb}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}```4{{bC`}{{j{{b{c}}}}}{}}{{{b{Bb}}{b{nCb}}}Cd}{cc{}}`{{{b{Bb}}}{{El{{b{c}}}}}Lh}{{{b{nBb}}}{{El{{b{nc}}}}}Lh}{{{b{nBb}}e}{{b{nc}}}Lh{{Ll{}{{Lj{c}}}}}}<{{}Bl}{{{b{nBb}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{}Bb}111111111111{{bC`}{{j{{b{c}}}}}{}}2222{{bC`C`C`}{{j{{b{c}}}}}{}}333{{bFf}{{j{{b{c}}}}}{}}4`4{{{b{nBb}}}{{El{c}}}Lh}52`5`{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}8{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}};{{bFl}{{j{{b{c}}}}}{}};;;```{{bd}f}0{{{b{nLn}}M`}f}{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0????????6655????????????????????{{{b{M`}}}M`}{{{b{Ln}}}Ln}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}000{{}Ln}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}033{Blf}0{{{b{M`}}{b{M`}}}Bf}{{b{b{c}}}Bf{}}000;;{{bC`}{{j{{b{c}}}}}{}}0{{{b{M`}}{b{nCb}}}Cd}{{{b{Ln}}{b{nCb}}}Cd}{cc{}}0::{{{b{Ln}}{b{M`}}}Bf}{{{b{M`}}{b{nc}}}fEd}{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}4123056{{}c{}}0{b{{j{{b{c}}}}}{}}000000000{{{b{Ln}}{b{Mb}}Md{b{Bb}}{b{M`}}}{{Bj{fBh}}}}111111111111111111111111{{bC`}{{j{{b{c}}}}}{}}022222222{{bC`C`C`}{{j{{b{c}}}}}{}}0333333{{bFf}{{j{{b{c}}}}}{}}04444441144{bc{}}0{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}088{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0;;{{bFl}{{j{{b{c}}}}}{}}0;;;;;;```{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}====43{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{f}}}}>>>>>>>>>>>>{{{b{Mf}}{b{Mb}}Md}{{Fb{f}}}}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}{b{Hj}}Md}{{Fb{f}}}}{{}Mf}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{b{{j{{b{c}}}}}{}}{Blf}{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhBlMd}{{Fb{f}}}}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Mf}}{b{nCb}}}Cd}{cc{}}5{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}>>>>>>>>>>>>>>>>>;>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{{b{nMf}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{f}}}}000000{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0{{{b{Mf}}{b{Mj}}}f}141{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}4{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999943999999999999{{}Ml}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Ml}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1;{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}>{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}7{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}222254222222222222{{}Mn}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}5{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Mn}}{b{nCb}}}Cd}{cc{}}9{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000000000000000<0000{{bC`C`C`}{{j{{b{c}}}}}{}}111{{bFf}{{j{{b{c}}}}}{}}22212{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}5{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}888`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}::::43::::::::::::{{}N`}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}={Blf}4{{bC`}{{j{{b{c}}}}}{}}{cc{}}{{{b{N`}}{b{Jf}}}{{El{{b{{Eb{Jf}}}}}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999999999999999<9999{{bC`C`C`}{{j{{b{c}}}}}{}}:::{{bFf}{{j{{b{c}}}}}{}};;;1{{{b{nN`}}{b{Jf}}{b{{Dd{Jf}}}}}f}<{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}?{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}8{{bFl}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}00```````{{bd}f}00`{{bh}{{j{{b{c}}}}}{}}000{{bl}{{j{{b{c}}}}}{}}0003333333333333333666655553333333333333333333333333333333333333333{{{b{L`}}}L`}{{{b{Nb}}}Nb}{{{b{Hd}}}Hd}{{b{b{nc}}}f{}}00{bf}0088888888{{}L`}{{}Hd}{Bl{{b{c}}}{}}000{Bl{{b{nc}}}{}}000<<<<{Blf}000{{{b{L`}}{b{L`}}}Bf}{{{b{Nb}}{b{Nb}}}Bf}{{{b{Ij}}{b{Ij}}}Bf}{{b{b{c}}}Bf{}}00000000000>>>>{{bC`}{{j{{b{c}}}}}{}}000{{{b{L`}}{b{nCb}}}Cd}{{{b{Nb}}{b{nCb}}}Cd}{{{b{Hd}}{b{nCb}}}Cd}{{{b{Ij}}{b{nCb}}}Cd}0{cc{}}00{NdIj}{NfIj}2``{{{b{L`}}NhNj}{{El{Dl}}}}{{{b{L`}}Nh}{{Eb{{F`{DlNj}}}}}}{{{b{L`}}{b{Kh}}{El{Dl}}}{{Bj{DlIj}}}}{b{{j{{b{c}}}}}{}}000{{{b{Nb}}{b{nc}}}fEd}{{}Bl}000{{{b{L`}}{b{Kh}}}{{El{Dl}}}}{{{b{L`}}}{{Fb{{Nl{Dl{Nl{DlDl}}}}}}}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}156042315602431436052{{}c{}}000<<<<<<<<``<<<<<<<<<<<<{{{b{Aj}}{El{Hd}}}{{Bj{L`Ij}}}}================================================{{bC`}{{j{{b{c}}}}}{}}000>>>>>>>>>>>>>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}000????????????{{bFf}{{j{{b{c}}}}}{}}000{b{{j{{b{c}}}}}{}}000000000002222{{{b{Ij}}}{{El{{b{Jh}}}}}}1111{bc{}}00{bJj}{bJl}{c{{Bj{e}}}{}{}}000{{}{{Bj{c}}}{}}000{bFj}0007777{b{{b{c}}}{}}000{{{b{n}}}{{b{nc}}}{}}000>>>>{{bFl}{{j{{b{c}}}}}{}}000::::::::::::``{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}<<<<43<<<<<<<<<<<<{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}>{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Nn}}{b{nCb}}}Cd}{{{b{Af}}MhMd}{{Bj{O`Ib}}}}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{{b{Af}}{b{Ah}}}Nn}::::::::::::>::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Af}}MhMhMd}{{Bj{O`Ib}}}}==2={c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}:{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{{}Ob}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Mh{El{Mh}}Md}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}1{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Mh}}}}={Blf}9{{bC`}{{j{{b{c}}}}}{}}{{{b{Ob}}{b{nCb}}}Cd}{cc{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}Md}{{Fb{Od}}}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Mh}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMd}{{Fb{Od}}}}0{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMd}{{Fb{Od}}}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MhMhMhMd}{{Fb{Od}}}}2100==============={{bC`}{{j{{b{c}}}}}{}}>>>>{{bC`C`C`}{{j{{b{c}}}}}{}}???{{bFf}{{j{{b{c}}}}}{}}{b{{j{{b{c}}}}}{}}0020{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}3{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}{{{b{nOb}}{b{Af}}{b{Ah}}{b{Mb}}MdMhMhMh}{{Fb{Od}}}}>{{bFl}{{j{{b{c}}}}}{}}777`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}999954999999999999{{{b{Of}}}Mh}{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}<{Blf}4{{bC`}{{j{{b{c}}}}}{}}{{{b{Of}}{b{nCb}}}Cd}{cc{}}{b{{j{{b{c}}}}}{}}{{}Bl}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{}c{}}99999{{Mh{b{Mb}}}Of}::::::::::::=::::{{bC`C`C`}{{j{{b{c}}}}}{}};;;{{bFf}{{j{{b{c}}}}}{}}<{{{b{Of}}}Oh}=={{{b{Of}}}{{El{Oh}}}}3{{{b{nOf}}{b{Mb}}}f}?{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj}{b{{j{{b{c}}}}}{}}{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}<{{bFl}{{j{{b{c}}}}}{}}333`{{bh}{{j{{b{c}}}}}{}}{{bl}{{j{{b{c}}}}}{}}555543555555555555{Bl{{b{c}}}{}}{Bl{{b{nc}}}{}}7{Blf}3{{bC`}{{j{{b{c}}}}}{}}{{{b{Hf}}{b{nCb}}}Cd}{cc{}}{{{b{Hf}}}{{El{{b{c}}}}}Lh}<{{}Bl}{{{b{nHf}}c}{{El{{b{nc}}}}}Lh}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{}c{}}{b{{j{{b{c}}}}}{}}0000{{{b{Hf}}}{{b{Bb}}}}{{{b{Hf}}}{{b{Ah}}}}{{Ah{B`{AlAn}}Bb}Hf}333333333333{{bC`}{{j{{b{c}}}}}{}}4444{{bC`C`C`}{{j{{b{c}}}}}{}}555{{{b{Hf}}}{{b{{B`{AlAn}}}}}}{{bFf}{{j{{b{c}}}}}{}}77{{{b{nHf}}}{{El{c}}}Lh}838{c{{Bj{e}}}{}{}}{{}{{Bj{c}}}{}}{bFj};{b{{b{c}}}{}}{{{b{n}}}{{b{nc}}}{}}>{{bFl}{{j{{b{c}}}}}{}}>>>`````````````````{{bd}f}000000000```{{bh}{{j{{b{c}}}}}{}}00000000000{{bl}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000````000000000000000000000000666666666666555555555555000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000{{{b{n{Ol{Oj}}}}{b{Oj}}{b{{Ol{Oj}}}}}f}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}`````{{{b{nKl}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}444444444444{{{b{Oj}}}Oj}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{b{b{nc}}}f{}}000000000{bf}000000000{{{b{A@b}}{b{A@b}}}Ad}{{{b{A@d}}{b{A@d}}}Ad}{{{b{A@f}}{b{A@f}}}Ad}{{{b{A@h}}{b{A@h}}}Ad}{{{b{A@j}}{b{A@j}}}Ad}{{{b{A@l}}{b{A@l}}}Ad}{{{b{A@n}}{b{A@n}}}Ad}{{b{b{c}}}Ad{}}000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{}A@b}{{}AA`}{{}AAb}{{{b{nKl}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00000000000{Bl{{b{nc}}}{}}00000000000{c{{Bj{A@b}}}Bn}{c{{Bj{A@d}}}Bn}{c{{Bj{A@f}}}Bn}{c{{Bj{A@h}}}Bn}{c{{Bj{A@j}}}Bn}{c{{Bj{A@l}}}Bn}{c{{Bj{A@n}}}Bn}{c{{Bj{AA`}}}Bn}{c{{Bj{AAb}}}Bn}{b{{j{{b{c}}}}}{}}00000000000{Blf}00000000000{{{b{nKl}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}``{{{b{A@b}}{b{A@b}}}Bf}{{{b{A@d}}{b{A@d}}}Bf}{{{b{A@f}}{b{A@f}}}Bf}{{{b{A@h}}{b{A@h}}}Bf}{{{b{A@j}}{b{A@j}}}Bf}{{{b{A@l}}{b{A@l}}}Bf}{{{b{A@n}}{b{A@n}}}Bf}{{{b{AA`}}{b{AA`}}}Bf}{{{b{AAb}}{b{AAb}}}Bf}{{b{b{c}}}Bf{}}00000000000000000000000000000000000`{{bl}{{j{{b{c}}}}}{}}00000000000{{bC`}{{j{{b{c}}}}}{}}00000000000{{{b{{Ol{c}}}}{b{nCb}}}CdGf}{{{b{Oj}}{b{nCb}}}Cd}{{{b{A@b}}{b{nCb}}}Cd}{{{b{A@d}}{b{nCb}}}Cd}{{{b{A@f}}{b{nCb}}}Cd}{{{b{A@h}}{b{nCb}}}Cd}{{{b{A@j}}{b{nCb}}}Cd}{{{b{A@l}}{b{nCb}}}Cd}{{{b{A@n}}{b{nCb}}}Cd}{{{b{AA`}}{b{nCb}}}Cd}{{{b{AAb}}{b{nCb}}}Cd}{cc{}}00000000000{{{b{nKl}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}Dl{b{nDl}}}{{On{D`}}}}{{{b{nKl}}D`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}{b{nDl}}}{{On{A@d}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@d}}}}{{{b{nKl}}{b{nDl}}}{{On{A@f}}}}{{{b{nA@`}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00000000000{{{b{A@b}}{b{nc}}}fEd}{{{b{A@d}}{b{nc}}}fEd}{{{b{A@f}}{b{nc}}}fEd}{{{b{A@h}}{b{nc}}}fEd}{{{b{A@j}}{b{nc}}}fEd}{{{b{A@l}}{b{nc}}}fEd}{{{b{A@n}}{b{nc}}}fEd}{{{b{AA`}}{b{nc}}}fEd}{{{b{AAb}}{b{nc}}}fEd}`{{}Bl}00000000000{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}12436502561304016453212650345124306305162440561236320541150634251634203654210{{}c{}}00000000000{b{{j{{b{c}}}}}{}}00000000000``000000000000{{{b{nKl}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nA@`}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}{{{b{nKl}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{nA@`}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}444444444444`444444444444444444444444````{{E`E`E`E`Bf}AA`}{{E`E`E`E`Bf}AAb}```666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666{{bC`}{{j{{b{c}}}}}{}}00000000000777777777777777777777777777777777777777777777777{{bC`C`C`}{{j{{b{c}}}}}{}}00000000000888888888888888888888888{{{b{A@b}}{b{A@b}}}{{El{Ad}}}}{{{b{A@d}}{b{A@d}}}{{El{Ad}}}}{{{b{A@f}}{b{A@f}}}{{El{Ad}}}}{{{b{A@h}}{b{A@h}}}{{El{Ad}}}}{{{b{A@j}}{b{A@j}}}{{El{Ad}}}}{{{b{A@l}}{b{A@l}}}{{El{Ad}}}}{{{b{A@n}}{b{A@n}}}{{El{Ad}}}}`????????????`{{bFf}{{j{{b{c}}}}}{}}00000000000{b{{j{{b{c}}}}}{}}00000000000000000000000{{{b{nKl}}D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{nDl}}}{{On{f}}}}222222222222``;;;;;;;;;;;;{{{b{nKl}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nA@`}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{nKl}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nA@`}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{nKl}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nA@`}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{nKl}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nA@`}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{nKl}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}`{{{b{A@b}}c}BjFh}{{{b{A@d}}c}BjFh}{{{b{A@f}}c}BjFh}{{{b{A@h}}c}BjFh}{{{b{A@j}}c}BjFh}{{{b{A@l}}c}BjFh}{{{b{A@n}}c}BjFh}{{{b{AA`}}c}BjFh}{{{b{AAb}}c}BjFh}{{{b{nKl}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}{{{b{nA@`}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}```{{{b{nKl}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nA@`}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{nKl}}DjD`D`{b{nDl}}}{{On{f}}}}{{{b{nA@`}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00000000000`{bc{}}000000000``{c{{Bj{e}}}{}{}}00000000000{{}{{Bj{c}}}{}}00000000000``{bFj}00000000000444444444444`{b{{b{c}}}{}}00000000000{{{b{n}}}{{b{nc}}}{}}00000000000``{{}c{}}00000000000{{bFl}{{j{{b{c}}}}}{}}00000000000888888888888888888888888````888888888888```{{bd}f}00{{bh}{{j{{b{c}}}}}{}}00{{bl}{{j{{b{c}}}}}{}}00{AAdA@b}<<<<<<<<<<<<777666<<<<<<<<<<<<<<<<<<<<<<<<<<<{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}}{{Eb{D`}}}}>>>{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{b{b{nc}}}f{}}00{bf}00{b{{j{{b{c}}}}}{}}00000`{{{b{{Dd{D`}}}}}Jl}{{}AAf}{{}AAj}{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}Bf{b{nDl}}}{{On{{F`{D`{Eb{D`}}}}}}}}{Bl{{b{c}}}{}}00{Bl{{b{nc}}}{}}00666{Blf}00{{{b{n{b{nAAf}}}}{b{{Dd{D`}}}}{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{Hj}}}{{Eb{D`}}}}```{{bl}{{j{{b{c}}}}}{}}00{{bC`}{{j{{b{c}}}}}{}}00{{{b{AAf}}{b{nCb}}}Cd}{{{b{AAh}}{b{nCb}}}Cd}{{{b{AAj}}{b{nCb}}}Cd}{cc{}}00{{{b{n{b{nAAf}}}}Dl{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@d}}}}{{{b{n{b{nAAf}}}}{b{nDl}}}{{On{A@f}}}}{b{{j{{b{c}}}}}{}}00{{}Bl}00{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}32416052341605{{}c{}}00999999{{{b{n{b{nAAf}}}}{b{{Dd{Dl}}}}{b{nDl}}}{{On{A@b}}}}``{{{b{n{b{nAAf}}}}D`D`{b{{Dd{D`}}}}{b{nDl}}}{{On{{Eb{D`}}}}}};;;`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;{{bC`}{{j{{b{c}}}}}{}}00<<<<<<<<<<<<{{bC`C`C`}{{j{{b{c}}}}}{}}00========={{bFf}{{j{{b{c}}}}}{}}00>>>>>>{{{b{n{b{nAAf}}}}D`{b{nDl}}}{{On{f}}}}???222{{{b{n{b{nAAf}}}}AA`AA`{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AA`{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AA`A@b{b{nDl}}}{{On{AA`}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AA`}}}}}}{{{b{n{b{nAAf}}}}AAbAAb{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bBf{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}AAb{b{nDl}}}{{On{{F`{A@bA@b}}}}}}{{{b{n{b{nAAf}}}}AAbA@b{b{nDl}}}{{On{AAb}}}}{{{b{n{b{nAAf}}}}A@bA@b{b{nDl}}}{{On{{El{AAb}}}}}}{{{b{n{b{nAAf}}}}D`{b{{Dd{D`}}}}{b{nDl}}}{{On{f}}}}{{{b{n{b{nAAf}}}}{b{n{Cl{Dj}}}}{b{{Cl{Dj}}}}{b{nDl}}}{{On{f}}}}`{{{b{n{b{nAAf}}}}DjD`{b{nDl}}}{{On{D`}}}}{{{b{n{b{nAAf}}}}DjD`D`{b{nDl}}}{{On{f}}}}{b{{j{{b{c}}}}}{}}00{bc{}}00{c{{Bj{e}}}{}{}}00{{}{{Bj{c}}}{}}00{bFj}00{A@bAAl}555{b{{b{c}}}{}}00{{{b{n}}}{{b{nc}}}{}}00{{}c{}}00{{bFl}{{j{{b{c}}}}}{}}00999999999`````{{bd}f}0`{{bh}{{j{{b{c}}}}}{}}0{{bl}{{j{{b{c}}}}}{}}0`<<<<<<<<6655<<<<<<<<<<<<<<<<<<{{{b{Fd}}}{{AAn{{Gn{Aj}}}}}}=={{{b{Ld}}}Ld}{{{b{Jd}}}Jd}{{b{b{nc}}}f{}}0{bf}0{b{{j{{b{c}}}}}{}}0`{{{b{Ah}}{b{Bb}}A`}Mj}11{c{{`{Gf}}}{{AB`{{b{nCb}}}{{Lj{Cd}}}}}}{{{b{{Dd{C`}}}}}Jl}{{}Ld}{Bl{{b{c}}}{}}0{Bl{{b{nc}}}{}}0{c{{Bj{Ld}}}Bn}77{Blf}0`{{{b{Jd}}{b{Jd}}}Bf}{{b{b{c}}}Bf{}}000{cD`{{Cn{ABb}}}}{{{b{Hj}}}D`}0{{bl}{{j{{b{c}}}}}{}}0{{{b{Aj}}{b{Hj}}}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}Bl}{{El{{b{{ABd{Nh}}}}}}}}{{{b{Aj}}{b{Hj}}}{{El{{b{Kh}}}}}}{{bC`}{{j{{b{c}}}}}{}}0{{{b{Ld}}{b{nCb}}}Cd}{{{b{Jd}}{b{nCb}}}Cd}0{cc{}}0{{{b{Kh}}Bf}{{ABf{Hj}}}}{DjABh}{b{{j{{b{c}}}}}{}}0{{}Bl}0{{{b{n}}{b{n{Bj{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{El{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{F`{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{En{ce}}}}}{{Bj{Ehg}}}{}{}{}}{{{b{n}}{b{n{Ef{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Ej{c}}}}}{{Bj{Ehe}}}{}{}}{{{b{n}}{b{n{Eb{c}}}}}{{Bj{Ehe}}}{}{}}3012456{{}c{}}09999{{{b{ABh}}Bl}{{Bj{{F`{ABhBl}}Jd}}}}::::::``::::::::::::::::::::::::{{bC`}{{j{{b{c}}}}}{}}0;;;;;;;;{{bC`C`C`}{{j{{b{c}}}}}{}}0<<<<{{{b{ABh}}Bl}Bl}``=={{bFf}{{j{{b{c}}}}}{}}0>>>>{{{b{Mj}}}f}??33{{{b{Af}}{b{nAh}}}{{Bj{fIb}}}}{{{b{Ld}}c}BjFh}{b{{j{{b{c}}}}}{}}0{bc{}}0{bJj}{bJl}{c{{Bj{e}}}{}{}}0{{}{{Bj{c}}}{}}0{bFj}066{b{{b{c}}}{}}0{{{b{n}}}{{b{nc}}}{}}0{{}c{}}0{{bFl}{{j{{b{c}}}}}{}}0::::::{{}f}","D":"L@nKKj","p":[[1,"reference"],[5,"Private",4722],[1,"unit"],[6,"Attribute",4723],[5,"Painted",4724],[6,"Color",4725],[0,"mut"],[6,"OptLevel",0,4726],[6,"Value",0,4727],[6,"Ordering",4728],[5,"Context",4729],[5,"Module",4730],[5,"Program",4731],[6,"CoreType",4732],[6,"CoreLibfunc",4732],[5,"ProgramRegistry",4733],[5,"MetadataStorage",1602],[5,"Attribute",4734],[1,"bool"],[6,"Error",624],[6,"Result",4735],[1,"usize"],[10,"Deserializer",4736],[1,"u8"],[5,"Formatter",4737],[8,"Result",4737],[1,"i128"],[1,"i16"],[1,"i8"],[1,"array"],[10,"Into",4738],[5,"Felt",4739],[1,"i32"],[1,"slice"],[10,"Clone",4740],[1,"u16"],[1,"u32"],[1,"u64"],[1,"i64"],[1,"u128"],[5,"Vec",4741],[10,"Hasher",4742],[5,"Box",4743],[6,"RewriteResult",4744],[5,"VecDeque",4745],[6,"Option",4746],[5,"OrderedHashMap",4747],[1,"tuple"],[8,"Result",624],[5,"Path",4748],[6,"Quirk",4723],[10,"Serializer",4749],[5,"TypeId",4750],[5,"Condition",4751],[6,"ProgramCache",262],[10,"PartialEq",4728],[10,"Eq",4728],[10,"Hash",4742],[10,"Debug",4737],[5,"JitProgramCache",437],[5,"AotProgramCache",352],[5,"AotNativeExecutor",1329,4752],[5,"Arc",4753],[5,"NativeContext",523],[5,"JitNativeExecutor",1329,4754],[5,"MetadataComputationConfig",2232],[5,"NativeModule",2886],[6,"CoreConcreteLibfunc",4732],[1,"str"],[6,"SierraAssertError",624],[6,"CompilerError",624],[5,"LayoutError",4755],[6,"Error",4756],[5,"Error",4757],[6,"Error",4758],[5,"Error",4759],[6,"GasMetadataError",2232],[6,"EditStateError",4760],[5,"NativeAssertError",932],[5,"TryFromIntError",4761],[6,"ProgramRegistryError",4733],[5,"LayoutError",4509],[5,"ConcreteTypeId",4762],[10,"Error",4763],[5,"SmolStr",4764],[5,"String",4765],[10,"ToNativeAssertError",932],[5,"BuiltinStats",1020],[5,"ExecutionResult",1020],[5,"ContractExecutionResult",1020],[5,"AotContractExecutor",1329,4766],[5,"FunctionId",4762],[6,"c_void",4767],[10,"StarknetSyscallHandler",2975],[5,"Library",4768],[5,"GasMetadata",2232],[5,"ContractEntryPoints",4769],[5,"BuiltinCosts",4509],[10,"AsRef",4738],[10,"Any",4750],[17,"Output"],[10,"FnOnce",4770],[5,"AutoBreakpoint",1700],[6,"BreakpointEvent",1700],[5,"Block",4771],[5,"Location",4772],[5,"DebugUtils",1887],[5,"Value",4773],[5,"ExecutionEngine",4774],[5,"DropOverridesMeta",1982],[5,"DupOverridesMeta",2065],[5,"EnumSnapshotVariantsMeta",2148],[5,"GasCost",2232],[6,"ApChangeError",4775],[6,"CostError",4776],[5,"StatementIdx",4731],[6,"CostTokenType",4777],[5,"BTreeMap",4778],[5,"ReallocBindingsMeta",2614],[5,"Operation",4779],[5,"RuntimeBindingsMeta",2699],[5,"OperationRef",4779],[5,"TailRecursionMeta",2799],[5,"BlockRef",4771],[5,"Felt252Abi",2975],[5,"ArrayAbi",2975],[8,"SyscallResult",2975],[5,"DummySyscallHandler",2975],[5,"U256",2975],[5,"ExecutionInfo",2975],[5,"ExecutionInfoV2",2975],[5,"TxV2Info",2975],[5,"ResourceBounds",2975],[5,"BlockInfo",2975],[5,"TxInfo",2975],[5,"Secp256k1Point",2975],[5,"Secp256r1Point",2975],[5,"BigInt",4780],[5,"StubSyscallHandler",4209],[5,"StubEvent",4209],[5,"ContractLogs",4209],[5,"BigUint",4781],[8,"Result",4782],[10,"Fn",4770],[5,"BigInt",4783],[5,"GenFunction",4731],[6,"Cow",4784],[5,"Layout",4755],[15,"Struct",251],[15,"Enum",251],[15,"Felt252Dict",251],[15,"BoundedInt",251],[15,"IntRange",251],[15,"BoundedIntOutOfRange",929],[15,"Range",931],[15,"EnumInit",1885],[15,"NotEnoughGas",2613]],"r":[[14,4726],[28,4727],[76,4785],[164,4726],[167,4726],[263,352],[265,437],[1329,4766],[1330,4752],[1331,4754]],"b":[[113,"impl-From%3Cu8%3E-for-OptLevel"],[114,"impl-From%3Cusize%3E-for-OptLevel"],[116,"impl-From%3Ci128%3E-for-Value"],[118,"impl-From%3Ci16%3E-for-Value"],[119,"impl-From%3Ci8%3E-for-Value"],[120,"impl-From%3C%5BT;+N%5D%3E-for-Value"],[121,"impl-From%3CFelt%3E-for-Value"],[122,"impl-From%3Ci32%3E-for-Value"],[123,"impl-From%3C%26%5BT%5D%3E-for-Value"],[124,"impl-From%3Cu8%3E-for-Value"],[125,"impl-From%3Cu16%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu64%3E-for-Value"],[128,"impl-From%3Ci64%3E-for-Value"],[129,"impl-From%3Cu128%3E-for-Value"],[130,"impl-From%3CVec%3CT%3E%3E-for-Value"],[295,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[296,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[739,"impl-Display-for-Error"],[740,"impl-Debug-for-Error"],[741,"impl-Display-for-SierraAssertError"],[742,"impl-Debug-for-SierraAssertError"],[743,"impl-Debug-for-CompilerError"],[744,"impl-Display-for-CompilerError"],[745,"impl-From%3CLayoutError%3E-for-Error"],[746,"impl-From%3CError%3E-for-Error"],[747,"impl-From%3CError%3E-for-Error"],[748,"impl-From%3CError%3E-for-Error"],[749,"impl-From%3CError%3E-for-Error"],[750,"impl-From%3CGasMetadataError%3E-for-Error"],[751,"impl-From%3CEditStateError%3E-for-Error"],[753,"impl-From%3CCompilerError%3E-for-Error"],[754,"impl-From%3CNativeAssertError%3E-for-Error"],[755,"impl-From%3CSierraAssertError%3E-for-Error"],[756,"impl-From%3CTryFromIntError%3E-for-Error"],[757,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[758,"impl-From%3CLayoutError%3E-for-Error"],[960,"impl-Debug-for-NativeAssertError"],[961,"impl-Display-for-NativeAssertError"],[2376,"impl-Display-for-GasMetadataError"],[2377,"impl-Debug-for-GasMetadataError"],[2381,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[2382,"impl-From%3CCostError%3E-for-GasMetadataError"],[4596,"impl-Display-for-LayoutError"],[4597,"impl-Debug-for-LayoutError"]],"c":"OzAAAAEAAC8AFwBDAAEAHgEAAHMBAADIAQAAHgIAAMkCAgC4AwAAOgQCAGkFAgBWBgAAzQYBAHMHAADRBwAAJAgAAHcIAAAICQMASQoAAJ4KAAACCwAAWQsAAJcMCwCuEAIAyhEBAA==","e":"OzAAAAEAAI4GHwEBAAAAAwAKABAADAAeAAEALAADAEIAAABFAAcAUAAAAFMABgBdAAsAagAAAHAAAwB1AAAAdwAMAIYAEACkAAAA0QAAAN4AAADjAAcA7QADAPIAAQD8ABAAEwEBACEBAQAkAQAAJwECACwBBwA3AQAAVgECAFoBAgBhAQAAaAEBAHQBAAB3AQEAegEAAH0BAAB/AQAAgQEHAI8BAACrAQIArwECAL0BAQDJAQAAywEAAM0BAQDQAQAA0wEAANUBAADXAQcA5QEAAAECAgAFAgIAEwIBACECAAAjAgIAJwIFAC8CAAAyAgAANAIGAEECAABdAgIAYQICAGgCAABxAgcAegIQAIwCCQCoAgUA0gIFANsCAgDkAgwA8gIFAP0CFwAkAwAAdwMAAHsDDgCNAwgAogMCAK0DAQC7AwEAvgMAAMEDAQDFAwcA0wMAAO8DBQD2AwIA/QMAAAAEAgAJBAAAFgQFADcEAgA9BAwAUAQKAF4EFAB5BAIAgwQZAOsEAwD1BAEA/QQBAAIFAQAHBQMADgULAB0FCAAzBQAANQUAAEgFBQBsBQIAdQUFAH4FAwCFBQUAjgUCAJQFAACZBRcAtwUBALoFAAC8BQAAygUBAAwGAAAhBgkALgYIAEUGAABLBgEAWgYCAF4GAABhBgAAZAYAAGYGAABpBgAAawYAAG0GBgCaBgIAngYCAKUGBQC3BgMAzwYFANkGBADgBgYA6wYBAPEGEQAPBwAARgcHAFAHBQBeBwIAZwcCAHYHAAB4BwIAfAcAAIAHAACDBwcApgcGALAHAAC0BwIAuAcCAL8HAADGBwEA1AcCANgHAADbBwAA3gcHAAcIAgALCAIAEggAABkIAQAnCAIAKwgAAC4IAAAxCAcAWggCAF4IAgBlCAAAbAgBAHoIAgB+CAAAgggAAIQIBwCsCAAArggCALIIAgC5CAIAvwgEANwIBwAMCQgAHQkJACsJEgBGCQQATgkBAFEJAwBaCSIAiQkBAJcJAAAACgAABQoQABoKCwA2CgAAPgoBAEwKAQBPCgAAUgoAAFYKBwCBCgIAhQoCAJMKAQChCgIAqwoAAK4KAACwCgAAsgoHAMMKAADkCgIA6AoBAOsKAAD3CgEABgsBAAkLAAAMCwAADwsHADwLAgBACwIATgsBAFwLAQBfCwAAYgsAAGYLAABoCwYAdQsCAI0LAACVCwIAmQsCAKALAgCkCwEAqAsHALELDADuCwMACgwXAI8MBwCjDCsA2wwBAOkMJQAbDT0AcQ0KAIgNBwCcDWkAHg4BACwOAwA8DgAAVQ4IAE4PBwBiDwAAhw8BAJUPAQCjDygA2A8yABcQJgBiEAMAchAAAHUQAgB+EAAAixAFAKwQAQCxEAgAwBAKAM4QBwDcEAIA4hADAOkQFwAKEQMAEREAAGARAABnEQ4AeREMAIkRCACeEQIAohEDAKoRAACzEQMAzBEFANQRAADaEQUA4hEHAPQRAgD9EQ8AGhIBAEUSAQBPEgAAVBIBAFgSCQBkEgUAchIAAA=="}],["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","output_library","output_mlir","path","primary","","quirk","","rapid_blink","","red","","replace_ids","resetting","","rgb","","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_compile"],[190,"dyn_clone::sealed"],[191,"yansi::attr_quirk"],[192,"yansi::paint"],[193,"clap_builder::builder::command"],[194,"yansi::color"],[195,"core::fmt"],[196,"clap_builder::parser::matches::arg_matches"],[197,"clap_builder"],[198,"core::result"],[199,"clap_builder::util::id"],[200,"core::option"],[201,"cairo_lang_utils::ordered_hash_map"],[202,"cairo_lang_semantic::substitution"],[203,"alloc::vec"],[204,"alloc::collections::vec_deque"],[205,"alloc::boxed"],[206,"anyhow"],[207,"clap_builder::builder::possible_value"],[208,"core::any"],[209,"yansi::condition"]],"i":"Ab`0`0Al1000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`10101010101010101010101010101010101010101000001010101001010010111010101010100011010101010","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}4306215{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333````33{{bCf}{{j{{b{c}}}}}{}}04444`4411`44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????","D":"A@d","p":[[1,"reference"],[5,"Private",190],[1,"unit"],[6,"Attribute",191],[5,"Painted",192],[5,"Command",193],[6,"Color",194],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",195],[8,"Result",195],[5,"Args",0],[5,"ArgMatches",196],[8,"Error",197],[6,"Result",198],[5,"Id",199],[6,"Option",200],[5,"OrderedHashMap",201],[6,"RewriteResult",202],[5,"Vec",203],[5,"VecDeque",204],[5,"Box",205],[1,"tuple"],[8,"Result",206],[6,"Quirk",191],[5,"PossibleValue",207],[5,"TypeId",208],[1,"slice"],[5,"Condition",209]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADwADQAAAAEAAwACAAkAAQAVAAMALQAEADYAAwA8AAEAQgABAEYAAQBKABAAZQAAAKQABwCuAAgA"}],["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","input","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","load_program","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","parse_input","parse_output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","starknet","strike","","to_owned","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_dump"],[192,"dyn_clone::sealed"],[193,"yansi::attr_quirk"],[194,"yansi::paint"],[195,"clap_builder::builder::command"],[196,"yansi::color"],[197,"core::fmt"],[198,"clap_builder::parser::matches::arg_matches"],[199,"clap_builder"],[200,"core::result"],[201,"clap_builder::util::id"],[202,"core::option"],[203,"cairo_lang_semantic::substitution"],[204,"alloc::vec"],[205,"alloc::collections::vec_deque"],[206,"cairo_lang_utils::ordered_hash_map"],[207,"alloc::boxed"],[208,"std::path"],[209,"cairo_lang_sierra::program"],[210,"core::error"],[211,"alloc::string"],[212,"core::any"],[213,"yansi::condition"]],"i":"``Ad0Ab1010001010101010101010101010101010101010101010001010101010101010101000100100000000111111101010101`01`0101010101010101010101010101010101010101010``01010101010100101010101010101000101010101","f":"````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}0{ll}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}07777{Af{{b{c}}}{}}0{Af{{b{A`c}}}{}}099{Aff}0;;{{bAh}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Aj}}}Al}{{{b{Ad}}{b{A`Aj}}}Al}{cc{}}0{{{b{An}}}{{Bb{AbB`}}}}{{{b{A`An}}}{{Bb{AbB`}}}}{b{{j{{b{c}}}}}{}}0{{}{{Bf{Bd}}}}{{}Af}0`{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Bj{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bhe}}}{}{}}{{{b{A`}}{b{A`{Bn{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bhg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{c}}}}}{{Bb{Bhe}}}{}{}}4635210{{}c{}}0::::::{{{b{Cd}}Cf}{{Bb{Ch{Cb{Cj}}}}}};;{{}{{Bb{f{Cb{Cj}}}}}}<<<<<<<<<<<<<<<<<<<<<<<<<<{{bAh}{{j{{b{c}}}}}{}}0========{{bAhAhAh}{{j{{b{c}}}}}{}}0>>>>`{{{b{Cl}}}{{Bb{CnD`}}}}{{{b{Cl}}}{{Bb{AdD`}}}}{b{{j{{b{c}}}}}{}}0{{bDb}{{j{{b{c}}}}}{}}011111144`11{bc{}}0{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bDd}055{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Ab}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Ab}}{b{A`An}}}{{Bb{fB`}}}}{{}c{}}0{{bDf}{{j{{b{c}}}}}{}}0;;;;;;","D":"Of","p":[[1,"reference"],[5,"Private",192],[1,"unit"],[6,"Attribute",193],[5,"Painted",194],[5,"Command",195],[6,"Color",196],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[1,"u8"],[5,"Formatter",197],[8,"Result",197],[5,"ArgMatches",198],[8,"Error",199],[6,"Result",200],[5,"Id",201],[6,"Option",202],[6,"RewriteResult",203],[5,"Vec",204],[5,"VecDeque",205],[1,"tuple"],[5,"OrderedHashMap",206],[5,"Box",207],[5,"Path",208],[1,"bool"],[5,"Program",209],[10,"Error",210],[1,"str"],[5,"PathBuf",208],[5,"String",211],[6,"Quirk",193],[5,"TypeId",212],[5,"Condition",213]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAAEUADgAAAAYACQABABUAAwAtAAcAOQADAD8AAQBFAAEASQABAE0AEQBnAAAAagAAAJUAAgCnAAcAsQAHAA=="}],["cairo_native_run",{"t":"PFPGNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNCNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","attr","","augment_args","augment_args_for_update","available_gas","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","command","command_for_update","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","fixed","","fmt","","from","","from_arg_matches","from_arg_matches_mut","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","path","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","run_mode","single_file","strike","","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_run"],[190,"cairo_native_run::utils"],[369,"cairo_native_run::utils::test"],[624,"dyn_clone::sealed"],[625,"yansi::attr_quirk"],[626,"yansi::paint"],[627,"clap_builder::builder::command"],[628,"yansi::color"],[629,"core::fmt"],[630,"clap_builder::parser::matches::arg_matches"],[631,"clap_builder"],[632,"core::result"],[633,"clap_builder::util::id"],[634,"core::option"],[635,"alloc::vec"],[636,"cairo_lang_semantic::substitution"],[637,"alloc::collections::vec_deque"],[638,"alloc::boxed"],[639,"cairo_lang_utils::ordered_hash_map"],[640,"anyhow"],[641,"clap_builder::builder::possible_value"],[642,"core::any"],[643,"yansi::condition"],[644,"cairo_lang_sierra::program"],[645,"starknet_types_core::felt"],[646,"alloc::vec::into_iter"],[647,"alloc::string"],[648,"cairo_native::values"],[649,"cairo_native::execution_result"],[650,"cairo_lang_runner"],[651,"cairo_lang_test_plugin"],[652,"scarb_metadata"],[653,"cairo_lang_test_plugin::test_config"],[654,"cairo_lang_sierra::ids"],[655,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ab`0`0Al10000101010101010101010101010101010101011100101010101010101010100010010111111100000001010101010`1010101010101010101010101010101010101010100010101010101000101110101010101000`11010101010D`0``0Ff1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fh0```EdFj2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"````{{bd}f}`{{bh}{{j{{b{c}}}}}{}}0{ll}0`{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}022222222222222222222{{{b{Ab}}}Ab}{{b{b{A`c}}}f{}}{bf}{{}l}06666{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}088{Adf}0::{{bAf}{{j{{b{c}}}}}{}}0{{{b{Ab}}{b{A`Ah}}}Aj}{{{b{Al}}{b{A`Ah}}}Aj}{cc{}}0{{{b{An}}}{{Bb{AlB`}}}}{{{b{A`An}}}{{Bb{AlB`}}}}??{{}{{Bf{Bd}}}}{{}Ad}0{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}3460125{{}c{}}0{b{{j{{b{c}}}}}{}}0000000{{}{{Cd{f}}}}11111111111111111111111111{{bAf}{{j{{b{c}}}}}{}}022222222{{bAfAfAf}{{j{{b{c}}}}}{}}03333``33{{bCf}{{j{{b{c}}}}}{}}044444411``44{bc{}}{{{b{Ab}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{A`Al}}{b{An}}}{{Bb{fB`}}}}{{{b{A`Al}}{b{A`An}}}{{Bb{fB`}}}}`{{}{{b{{Cl{Ab}}}}}}??{{bCn}{{j{{b{c}}}}}{}}0??????````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0{b{{j{{b{c}}}}}{}}0000000998800000000000000000000{{{b{D`}}}D`}{{b{b{A`c}}}f{}}{bf}3333{Ad{{b{c}}}{}}0{Ad{{b{A`c}}}{}}055{Adf}077{{{b{Db}}{b{Dd}}}{{Cd{{b{Df}}}}}}{{bAf}{{j{{b{c}}}}}{}}0{{{b{D`}}{b{A`Ah}}}Aj}{{{Dj{Dh}}}Dl}{cc{}}0;;{{}Ad}0{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}5210346{{}c{}}0{b{{j{{b{c}}}}}{}}000{{{b{Dn}}}{{Bh{Dh}}}}111111111111111111111111111111>>11111111{{bAfAfAf}{{j{{b{c}}}}}{}}02222`22{{bCf}{{j{{b{c}}}}}{}}0333333{{{b{E`}}}{{Cd{Eb}}}}22`44`{bc{}}{{{b{D`}}}{{Bf{Ch}}}}{c{{Bb{e}}}{}{}}0{{}{{Bb{c}}}{}}0{bCj}099{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Cl{D`}}}}}}=={{bCn}{{j{{b{c}}}}}{}}0======`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{b{c}}}{}}00{Ad{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{Ed}}Ad}f}{Adf}00``555{{EfEhEhDl}{{Cb{EfAd}}}}{{{b{Ej}}}{{Bh{{b{El}}}}}}{{bAf}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{b{A`}}{b{A`{Bh{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bl{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bn{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{C`{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Cb{ce}}}}}{{Bb{Bjg}}}{}{}{}}{{{b{A`}}{b{A`{Bf{c}}}}}{{Bb{Bje}}}{}{}}{{{b{A`}}{b{A`{Bb{ce}}}}}{{Bb{Bjg}}}{}{}{}}36145024532106{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAfAfAf}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bCf}{{j{{b{c}}}}}{}}00111111111222{{{Bh{{Cb{DlEn}}}}Db{C`{F`{C`{FbFd}}}}Ff}{{Cd{Ed}}}}`222{c{{Bb{e}}}{}{}}00{{}{{Bb{c}}}{}}00{bCj}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bCn}{{j{{b{c}}}}}{}}00888888888","D":"CGn","p":[[1,"reference"],[5,"Private",624],[1,"unit"],[6,"Attribute",625],[5,"Painted",626],[5,"Command",627],[6,"Color",628],[0,"mut"],[6,"RunMode",0],[1,"usize"],[1,"u8"],[5,"Formatter",629],[8,"Result",629],[5,"Args",0],[5,"ArgMatches",630],[8,"Error",631],[6,"Result",632],[5,"Id",633],[6,"Option",634],[5,"Vec",635],[6,"RewriteResult",636],[5,"VecDeque",637],[5,"Box",638],[5,"OrderedHashMap",639],[1,"tuple"],[8,"Result",640],[6,"Quirk",625],[5,"PossibleValue",641],[5,"TypeId",642],[1,"slice"],[5,"Condition",643],[6,"RunMode",190],[5,"Program",644],[1,"str"],[8,"Function",644],[5,"Felt",645],[5,"IntoIter",646],[5,"String",647],[6,"Value",648],[5,"ExecutionResult",649],[6,"RunResultValue",650],[5,"TestsSummary",369],[5,"TestCompilation",651],[1,"bool"],[5,"PackageMetadata",652],[5,"TargetMetadata",652],[5,"TestConfig",653],[5,"FunctionId",654],[6,"CostTokenType",655],[1,"i32"],[5,"RunArgs",190],[6,"TestStatus",369],[5,"TestResult",369]],"r":[],"b":[],"c":"OzAAAAEAAAYAAwAsAAEA5gABAKoBAgA=","e":"OzAAAAEAALEAIAAAAAEAAwACAAkAAQAWAAMALgAEADcAAwA9AAEAQwABAEcAAQBLABAAZgAAAKMABwCtAAkAvwAEANAAAwDoAAIA7wADAPUAAQD8AAAAAgEPAEcBAABVAQAAWAEIAGMBBgByAQEAiQEFALMBBQC9AQQA0QEYADgCAABQAggAXAIIAA=="}],["cairo_native_runtime",{"t":"SSFFFFHHNNNNNNNNHHHHHHHHHHHHHHHHONNNHONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BYTES_IN_WORD","BYTE_ARRAY_MAGIC","DICT_GAS_REFUND_PER_ACCESS","FeltDict","FormattedItem","HALF_PRIME","as_cairo_short_string","as_cairo_short_string_ex","borrow","","","","borrow_mut","","","","cairo_native__dict_drop","cairo_native__dict_dup","cairo_native__dict_gas_refund","cairo_native__dict_get","cairo_native__dict_new","cairo_native__get_costs_builtin","cairo_native__libfunc__debug__print","cairo_native__libfunc__ec__ec_point_from_x_nz","cairo_native__libfunc__ec__ec_point_try_new_nz","cairo_native__libfunc__ec__ec_state_add","cairo_native__libfunc__ec__ec_state_add_mul","cairo_native__libfunc__ec__ec_state_init","cairo_native__libfunc__ec__ec_state_try_finalize_nz","cairo_native__libfunc__hades_permutation","cairo_native__libfunc__pedersen","cairo_native__set_costs_builtin","count","deref","","fmt","format_next_item","free_fn","from","","","","get","inner","into","","","","quote_if_string","try_from","","","","try_into","","","","type_id","","","","upcast","","","","upcast_mut","","","","vzip","","",""],"q":[[0,"cairo_native_runtime"],[73,"starknet_types_core::felt"],[74,"alloc::string"],[75,"core::option"],[76,"core::ffi"],[77,"core::fmt"],[78,"core::iter::traits::iterator"],[79,"core::clone"],[80,"core::result"],[81,"core::any"]],"i":"````````BlBdBfn3210````````````````0210`032103032103321032103210321032103210","f":"``````{{{d{b}}}{{h{f}}}}{{{d{b}}j}{{h{f}}}}{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}000{{n{h{{Af{A`}{{Ab{Ad}}}}}}}Ad}{{n{Af{A`}{{Ab{A`}}}}}n}{nAh}{{{d{ln}}{d{{Al{Aj}}}}}A`}{{{Af{A`}{{Ab{Ad}}}}}n}{{}Ah}{{AnAlB`}An}{{{d{l{Al{{Al{Aj}}}}}}}Bb}0{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{Aj}}}}{d{{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}}Ad}{{{d{l{Al{{Al{Aj}}}}}}{d{{Al{{Al{Aj}}}}}}}Bb}{{{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}{d{l{Al{Aj}}}}}Ad}{{{d{l{Al{Aj}}}}{d{{Al{Aj}}}}{d{{Al{Aj}}}}}Ad}{AhAh}`{{{d{Bd}}}{{d{b}}}}{{{d{Bf}}}{{d{Ah}}}}{{{d{n}}{d{lBh}}}Bj}{{{d{lc}}}{{h{Bl}}}{{C`{}{{Bn{b}}}}Cb}}`{cc{}}000{Blf}`{{}c{}}0001{c{{Cd{e}}}{}{}}000{{}{{Cd{c}}}{}}000{dCf}000{d{{d{c}}}{}}000{{{d{l}}}{{d{lc}}}{}}0005555","D":"Cn","p":[[5,"Felt",73],[1,"reference"],[5,"String",74],[6,"Option",75],[1,"usize"],[0,"mut"],[5,"FeltDict",0],[6,"c_void",76],[17,"Output"],[1,"unit"],[1,"fn"],[1,"u64"],[1,"u8"],[1,"array"],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[5,"Formatter",77],[8,"Result",77],[5,"FormattedItem",0],[17,"Item"],[10,"Iterator",78],[10,"Clone",79],[6,"Result",80],[5,"TypeId",81]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACoABwAAAAMABgAAAAkABwAhAAMAJgAAACwAAAAyABcA"}],["cairo_native_stress",{"t":"SJFFSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNHHNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","attr","","augment_args","augment_args_for_update","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","cache","clear","","command","command_for_update","compile_and_insert","conceal","","context","cyan","","deref","","deref_mut","","dim","","directory_get_size","directory_is_empty","drop","","fg","","fixed","","fmt","from","","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","green","","group_id","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","linger","","magenta","","main","mask","","modify_starknet_contract","new","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","output","primary","","quirk","","rapid_blink","","red","","resetting","","rgb","","rounds","set_global_subscriber","strike","","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","update_from_arg_matches","update_from_arg_matches_mut","vzip","","whenever","","white","","wrap","","yellow",""],"q":[[0,"cairo_native_stress"],[188,"yansi::attr_quirk"],[189,"yansi::paint"],[190,"clap_builder::builder::command"],[191,"yansi::color"],[192,"cairo_lang_sierra::program"],[193,"cairo_native::ffi"],[194,"cairo_native::executor::aot"],[195,"alloc::sync"],[196,"core::cmp"],[197,"core::hash"],[198,"core::fmt"],[199,"std::io::error"],[200,"std::path"],[201,"core::convert"],[202,"clap_builder::parser::matches::arg_matches"],[203,"clap_builder"],[204,"core::result"],[205,"cairo_lang_sierra::ids"],[206,"core::option"],[207,"clap_builder::util::id"],[208,"alloc::boxed"],[209,"cairo_lang_semantic::substitution"],[210,"alloc::vec"],[211,"alloc::collections::vec_deque"],[212,"cairo_lang_utils::ordered_hash_map"],[213,"cairo_native::context"],[214,"core::any"],[215,"yansi::condition"]],"i":"`````nC`001010101010101010101010101010101011000110110101010``10101001000`110010111111100000001010101010`10`1101010101010101010101010101010101010101001010101010100`10101010101010001010101010","f":"`````{{bd}{{f{{b{c}}}}}{}}0{hh}0{{bj}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000000{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0222222222222222222`22{{}h}0{{{b{l{n{c}}}}c{b{A`}}Ab}{{Af{Ad}}}{AhAjAlAn}}44`44{B`{{b{c}}}{}}0{B`{{b{lc}}}{}}066{c{{Bd{Bb}}}{{Bh{Bf}}}}{c{{Bd{Bj}}}{{Bh{Bf}}}}{B`Bl}0::{{bBn}{{f{{b{c}}}}}{}}0{{{b{C`}}{b{lCb}}}Cd}{cc{}}0{{{b{Cf}}}{{Cj{C`Ch}}}}{{{b{lCf}}}{{Cj{C`Ch}}}}{Cl{{D`{CnA`}}}}{{{b{{n{c}}}}{b{c}}}{{Db{{Af{Ad}}}}}{AhAjAlAn}}{b{{f{{b{c}}}}}{}}0{{}{{Db{Dd}}}}{{}B`}0{{{b{l}}{b{l{Df{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Cj{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{D`{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Dj{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dl{c}}}}}{{Cj{Dhe}}}{}{}}{{{b{l}}{b{l{Dn{ce}}}}}{{Cj{Dhg}}}{}{}{}}{{{b{l}}{b{l{Db{c}}}}}{{Cj{Dhe}}}{}{}}1034265{{}c{}}0::::::::{{}Bl};;{{A`ClCl}A`}{{{b{E`}}}{{n{c}}}{AhAjAlAn}}========================{{bBn}{{f{{b{c}}}}}{}}0>>>>>>>>{{bBnBnBn}{{f{{b{c}}}}}{}}0????`??{{bEb}{{f{{b{c}}}}}{}}0{b{{f{{b{c}}}}}{}}0000022`{{{b{C`}}}Bl}11{c{{Cj{e}}}{}{}}0{{}{{Cj{c}}}{}}0{bEd}044{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{{b{lC`}}{b{Cf}}}{{Cj{BlCh}}}}{{{b{lC`}}{b{lCf}}}{{Cj{BlCh}}}}??{{bEf}{{f{{b{c}}}}}{}}0999999","D":"A@j","p":[[1,"reference"],[6,"Attribute",188],[5,"Painted",189],[5,"Command",190],[6,"Color",191],[0,"mut"],[5,"NaiveAotCache",0],[5,"Program",192],[6,"OptLevel",193],[5,"AotNativeExecutor",194],[5,"Arc",195],[10,"PartialEq",196],[10,"Eq",196],[10,"Hash",197],[10,"Display",198],[1,"usize"],[1,"u64"],[8,"Result",199],[5,"Path",200],[10,"AsRef",201],[1,"bool"],[1,"unit"],[1,"u8"],[5,"StressTestCommand",0],[5,"Formatter",198],[8,"Result",198],[5,"ArgMatches",202],[8,"Error",203],[6,"Result",204],[1,"u32"],[5,"FunctionId",205],[1,"tuple"],[6,"Option",206],[5,"Id",207],[5,"Box",208],[6,"RewriteResult",209],[5,"Vec",210],[5,"VecDeque",211],[5,"OrderedHashMap",212],[5,"NativeContext",213],[6,"Quirk",188],[5,"TypeId",214],[5,"Condition",215]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAEAEAAAACsALAA=","e":"OzAAAAEAADcAEQACAAAACAABABQAAwAqAAAALQABADIAAAA1AAMAPAACAEMAAABGAAEASQAAAEwAEABnAAAAawAAAKIAAAClAAUArQAHAA=="}],["cairo_native_test",{"t":"FONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNOONNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOONNNNNNOOONNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","attr","augment_args","augment_args_for_update","bg","black","blink","blue","bold","borrow","borrow_mut","bright","bright_black","bright_blue","bright_cyan","bright_green","bright_magenta","bright_red","bright_white","bright_yellow","clear","command","command_for_update","conceal","cyan","deref","deref_mut","dim","drop","fg","filter","fixed","fmt","from","from_arg_matches","from_arg_matches_mut","green","group_id","ignored","include_ignored","init","internal_rewrite","","","","","","","into","invert","italic","linger","magenta","main","mask","on_black","on_blue","on_bright","on_bright_black","on_bright_blue","on_bright_cyan","on_bright_green","on_bright_magenta","on_bright_red","on_bright_white","on_bright_yellow","on_cyan","on_fixed","on_green","on_magenta","on_primary","on_red","on_rgb","on_white","on_yellow","opt_level","path","primary","quirk","rapid_blink","red","resetting","rgb","run_mode","single_file","starknet","strike","try_from","try_into","type_id","underline","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","whenever","white","wrap","yellow","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"cairo_native_test"],[102,"cairo_native_test::utils"],[281,"cairo_native_test::utils::test"],[536,"yansi::attr_quirk"],[537,"yansi::paint"],[538,"clap_builder::builder::command"],[539,"yansi::color"],[540,"core::fmt"],[541,"clap_builder::parser::matches::arg_matches"],[542,"clap_builder"],[543,"core::result"],[544,"clap_builder::util::id"],[545,"core::option"],[546,"alloc::boxed"],[547,"cairo_lang_semantic::substitution"],[548,"cairo_lang_utils::ordered_hash_map"],[549,"alloc::collections::vec_deque"],[550,"alloc::vec"],[551,"anyhow"],[552,"core::any"],[553,"yansi::condition"],[554,"dyn_clone::sealed"],[555,"cairo_lang_sierra::program"],[556,"starknet_types_core::felt"],[557,"alloc::vec::into_iter"],[558,"alloc::string"],[559,"cairo_native::values"],[560,"cairo_native::execution_result"],[561,"cairo_lang_runner"],[562,"clap_builder::builder::possible_value"],[563,"cairo_lang_test_plugin"],[564,"scarb_metadata"],[565,"cairo_lang_test_plugin::test_config"],[566,"cairo_lang_sierra::ids"],[567,"cairo_lang_sierra::extensions::modules::gas"]],"i":"`Ad0000000000000000000000000000000000000000000000000000`00000000000000000000000000000000000000000`00000Cj0``0Fd1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Ff0```EbFh2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``{{bd}{{f{{b{c}}}}}{}}{hh}0{{bj}{{f{{b{c}}}}}{}}{b{{f{{b{c}}}}}{}}000{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}2222222222{{}h}033{n{{b{c}}}{}}{n{{b{lc}}}{}}5{nA`}7`{{bAb}{{f{{b{c}}}}}{}}{{{b{Ad}}{b{lAf}}}Ah}{cc{}}{{{b{Aj}}}{{An{AdAl}}}}{{{b{lAj}}}{{An{AdAl}}}};{{}{{Bb{B`}}}}``{{}n}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{}c{}}{b{{f{{b{c}}}}}{}}000{{}{{C`{A`}}}}1111111111111{{bAb}{{f{{b{c}}}}}{}}2222{{bAbAbAb}{{f{{b{c}}}}}{}}33``3{{bCb}{{f{{b{c}}}}}{}}4441```4{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bCd}7{b{{b{c}}}{}}{{{b{l}}}{{b{lc}}}{}}{{{b{lAd}}{b{Aj}}}{{An{A`Al}}}}{{{b{lAd}}{b{lAj}}}{{An{A`Al}}}}`<{{bCf}{{f{{b{c}}}}}{}}<<<````{{bCh}A`}{{bd}{{f{{b{c}}}}}{}}0{{bj}{{f{{b{c}}}}}{}}0????????7766????????????????????{{{b{Cj}}}Cj}{{b{b{lc}}}A`{}}{bA`}{b{{f{{b{c}}}}}{}}000{n{{b{c}}}{}}0{n{{b{lc}}}{}}022{nA`}077{{{b{Cl}}{b{Cn}}}{{C`{{b{D`}}}}}}{{bAb}{{f{{b{c}}}}}{}}0{{{b{Cj}}{b{lAf}}}Ah}{{{Dd{Db}}}Df}{cc{}}088{{}n}0{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}2631054{{}c{}}0{b{{f{{b{c}}}}}{}}000{{{b{Dh}}}{{Bn{Db}}}}111111111111111111111111111111>>11111111{{bAbAbAb}{{f{{b{c}}}}}{}}02222`22{{bCb}{{f{{b{c}}}}}{}}0333333{{{b{Dj}}}{{C`{Dl}}}}22`44`{bc{}}{{{b{Cj}}}{{Bb{Dn}}}}{c{{An{e}}}{}{}}0{{}{{An{c}}}{}}0{bCd}099{b{{b{c}}}{}}0{{{b{l}}}{{b{lc}}}{}}0{{}{{b{{E`{Cj}}}}}}=={{bCf}{{f{{b{c}}}}}{}}0======`````{{bd}{{f{{b{c}}}}}{}}00{{bj}{{f{{b{c}}}}}{}}00????????????555444????????????????????????????????????{n{{b{c}}}{}}00{n{{b{lc}}}{}}00{b{{f{{b{c}}}}}{}}00{{{b{Eb}}n}A`}{nA`}00``555{{EdEfEfDf}{{Bh{Edn}}}}{{{b{Eh}}}{{Bn{{b{Ej}}}}}}{{bAb}{{f{{b{c}}}}}{}}00{cc{}}00`666`{{}n}00{{{b{l}}{b{l{Bl{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{An{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bb{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bh{ce}}}}}{{An{Bfg}}}{}{}{}}{{{b{l}}{b{l{Bd{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bn{c}}}}}{{An{Bfe}}}{}{}}{{{b{l}}{b{l{Bj{ce}}}}}{{An{Bfg}}}{}{}{}}41620356203514{{}c{}}00???????????????????????????????????????????????????:::????????????{{bAbAbAb}{{f{{b{c}}}}}{}}00{b{{f{{b{c}}}}}{}}00000`000{{bCb}{{f{{b{c}}}}}{}}00111111111222{{{Bn{{Bh{DfEl}}}}Cl{Bj{En{Bj{F`Fb}}}}Fd}{{C`{Eb}}}}`222{c{{An{e}}}{}{}}00{{}{{An{c}}}{}}00{bCd}00555{b{{b{c}}}{}}00{{{b{l}}}{{b{lc}}}{}}00999{{bCf}{{f{{b{c}}}}}{}}00888888888","D":"C@j","p":[[1,"reference"],[6,"Attribute",536],[5,"Painted",537],[5,"Command",538],[6,"Color",539],[0,"mut"],[1,"usize"],[1,"unit"],[1,"u8"],[5,"Args",0],[5,"Formatter",540],[8,"Result",540],[5,"ArgMatches",541],[8,"Error",542],[6,"Result",543],[5,"Id",544],[6,"Option",545],[5,"Box",546],[6,"RewriteResult",547],[1,"tuple"],[5,"OrderedHashMap",548],[5,"VecDeque",549],[5,"Vec",550],[8,"Result",551],[6,"Quirk",536],[5,"TypeId",552],[5,"Condition",553],[5,"Private",554],[6,"RunMode",102],[5,"Program",555],[1,"str"],[8,"Function",555],[5,"Felt",556],[5,"IntoIter",557],[5,"String",558],[6,"Value",559],[5,"ExecutionResult",560],[6,"RunResultValue",561],[5,"PossibleValue",562],[1,"slice"],[5,"TestsSummary",281],[5,"TestCompilation",563],[1,"bool"],[5,"PackageMetadata",564],[5,"TargetMetadata",564],[5,"TestConfig",565],[5,"FunctionId",566],[6,"CostTokenType",567],[1,"i32"],[5,"RunArgs",102],[6,"TestStatus",281],[5,"TestResult",281]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAUAEAAAABYAjgCPAFIBUwFUAQ==","e":"OzAAAAEAAJMAIAAAAAAABAABAAsAAQAXAAEAGwABAB4AAAAiAAAAJAABACcAAAAqAAcANwAAAFkAAgBdAAUAZwAEAHgAAwCQAAIAlwADAJ0AAQCkAAAAqgAPAO8AAAD9AAAAAAEIAAsBBgAaAQEAMQEFAFsBBQBlAQQAeQEYAOABAAD4AQgABAIIAA=="}],["scarb_native_dump",{"t":"HCPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[181,"scarb_native_dump::utils::test"],[436,"anyhow"],[437,"dyn_clone::sealed"],[438,"yansi::attr_quirk"],[439,"yansi::paint"],[440,"yansi::color"],[441,"cairo_lang_sierra::program"],[442,"core::fmt"],[443,"starknet_types_core::felt"],[444,"alloc::vec::into_iter"],[445,"alloc::string"],[446,"alloc::vec"],[447,"cairo_lang_semantic::substitution"],[448,"core::result"],[449,"core::option"],[450,"cairo_lang_utils::ordered_hash_map"],[451,"alloc::boxed"],[452,"alloc::collections::vec_deque"],[453,"cairo_native::values"],[454,"cairo_native::execution_result"],[455,"cairo_lang_runner"],[456,"clap_builder::builder::possible_value"],[457,"core::any"],[458,"yansi::condition"],[459,"cairo_lang_test_plugin"],[460,"scarb_metadata"],[461,"cairo_lang_test_plugin::test_config"],[462,"cairo_lang_sierra::ids"],[463,"cairo_lang_sierra::extensions::modules::gas"]],"i":"``Ab0``0Ej1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101El0```DhEn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"{{}{{d{b}}}}`````{{fh}b}{{fj}{{l{{f{c}}}}}{}}0{{fn}{{l{{f{c}}}}}{}}0{f{{l{{f{c}}}}}{}}0000000{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}022222222222222222222{{{f{Ab}}}Ab}{{f{f{A`c}}}b{}}{fb}5555{Ad{{f{c}}}{}}0{Ad{{f{A`c}}}{}}077{Adb}099{{{f{Af}}{f{Ah}}}{{d{{f{Aj}}}}}}{{fAl}{{l{{f{c}}}}}{}}0{{{f{Ab}}{f{A`An}}}B`}{{{Bd{Bb}}}Bf}{cc{}}0=={{}Ad}0{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}6510342{{}c{}}0{f{{l{{f{c}}}}}{}}000{{{f{Ch}}}{{Bh{Bb}}}}111111111111111111111111111111>>11111111{{fAlAlAl}{{l{{f{c}}}}}{}}02222`22{{fCj}{{l{{f{c}}}}}{}}0333333{{{f{Cl}}}{{d{Cn}}}}22`44`{fc{}}{{{f{Ab}}}{{Bn{D`}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{fDb}099{f{{f{c}}}{}}0{{{f{A`}}}{{f{A`c}}}{}}0{{}{{f{{Dd{Ab}}}}}}=={{fDf}{{l{{f{c}}}}}{}}0======`````{{fj}{{l{{f{c}}}}}{}}00{{fn}{{l{{f{c}}}}}{}}00????????????555444????????????????????????????????????{Ad{{f{c}}}{}}00{Ad{{f{A`c}}}{}}00{f{{l{{f{c}}}}}{}}00{{{f{Dh}}Ad}b}{Adb}00``555{{DjDlDlBf}{{C`{DjAd}}}}{{{f{Dn}}}{{Bh{{f{E`}}}}}}{{fAl}{{l{{f{c}}}}}{}}00{cc{}}00`666`{{}Ad}00{{{f{A`}}{f{A`{Cd{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bl{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{C`{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Cf{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Cb{ce}}}}}{{Bl{Bjg}}}{}{}{}}{{{f{A`}}{f{A`{Bh{c}}}}}{{Bl{Bje}}}{}{}}{{{f{A`}}{f{A`{Bn{c}}}}}{{Bl{Bje}}}{}{}}63504210245631{{}c{}}00???????????????????????????????????????????????????:::????????????{{fAlAlAl}{{l{{f{c}}}}}{}}00{f{{l{{f{c}}}}}{}}00000`000{{fCj}{{l{{f{c}}}}}{}}00111111111222{{{Bh{{C`{BfEb}}}}Af{Cb{Ed{Cb{EfEh}}}}Ej}{{d{Dh}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{fDb}00555{f{{f{c}}}{}}00{{{f{A`}}}{{f{A`c}}}{}}00999{{fDf}{{l{{f{c}}}}}{}}00888888888","D":"BGn","p":[[1,"unit"],[8,"Result",436],[1,"reference"],[5,"Private",437],[6,"Attribute",438],[5,"Painted",439],[6,"Color",440],[0,"mut"],[6,"RunMode",2],[1,"usize"],[5,"Program",441],[1,"str"],[8,"Function",441],[1,"u8"],[5,"Formatter",442],[8,"Result",442],[5,"Felt",443],[5,"IntoIter",444],[5,"String",445],[5,"Vec",446],[6,"RewriteResult",447],[6,"Result",448],[6,"Option",449],[1,"tuple"],[5,"OrderedHashMap",450],[5,"Box",451],[5,"VecDeque",452],[6,"Value",453],[6,"Quirk",438],[5,"ExecutionResult",454],[6,"RunResultValue",455],[5,"PossibleValue",456],[5,"TypeId",457],[1,"slice"],[5,"Condition",458],[5,"TestsSummary",181],[5,"TestCompilation",459],[1,"bool"],[5,"PackageMetadata",460],[5,"TargetMetadata",460],[5,"TestConfig",461],[5,"FunctionId",462],[6,"CostTokenType",463],[1,"i32"],[5,"RunArgs",2],[6,"TestStatus",181],[5,"TestResult",181]],"r":[],"b":[],"c":"OjAAAAEAAAAAAAQAEAAAACoAKwDuAO8A8AA=","e":"OzAAAAEAAHUAFAAAAAAAAgAFABQAAwAsAAIAMwADADkAAQBAAAAARgAPAIsAAACZAAAAnAAIAKcABgC2AAEAzQAFAPcABQABAQQAFQEYAHwBAACUAQgAoAEIAA=="}],["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNONNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOONNNONNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNPPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHNNONNCNNNNNNNNNNNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOONNNHHNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","","attr","","","augment_args","augment_args_for_update","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","clone","","clone_into","","clone_to_uninit","","command","command_for_update","conceal","","","cyan","","","default","","deref","","","deref_mut","","","deserialize_test_compilation","dim","","","drop","","","fg","","","filter","fixed","","","fmt","","from","","","from_arg_matches","from_arg_matches_mut","green","","","group_id","ignored","include_ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","main","mask","","","matches","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","opt_level","packages_filter","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_mode","seen","strike","","","test_kind","to_owned","","to_possible_value","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","","","whenever","","","white","","","wrap","","","yellow","","","Aot","Jit","RunArgs","RunMode","__clone_box","attr","","bg","","black","","blink","","blue","","bold","","borrow","","borrow_mut","","bright","","bright_black","","bright_blue","","bright_cyan","","bright_green","","bright_magenta","","bright_red","","bright_white","","bright_yellow","","clear","","clone","clone_into","clone_to_uninit","conceal","","cyan","","deref","","deref_mut","","dim","","drop","","fg","","find_function","fixed","","fmt","format_for_panic","from","","green","","init","","internal_rewrite","","","","","","","","","","","","","","into","","invert","","italic","","jitvalue_to_felt","linger","","magenta","","mask","","on_black","","on_blue","","on_bright","","on_bright_black","","on_bright_blue","","on_bright_cyan","","on_bright_green","","on_bright_magenta","","on_bright_red","","on_bright_white","","on_bright_yellow","","on_cyan","","on_fixed","","on_green","","on_magenta","","on_primary","","on_red","","on_rgb","","on_white","","on_yellow","","opt_level","primary","","quirk","","rapid_blink","","red","","resetting","","result_to_runresult","rgb","","run_mode","strike","","test","to_owned","to_possible_value","try_from","","try_into","","type_id","","underline","","upcast","","upcast_mut","","value_variants","vzip","","whenever","","white","","wrap","","yellow","","Fail","Success","TestResult","TestStatus","TestsSummary","attr","","","bg","","","black","","","blink","","","blue","","","bold","","","borrow","","","borrow_mut","","","bright","","","bright_black","","","bright_blue","","","bright_cyan","","","bright_green","","","bright_magenta","","","bright_red","","","bright_white","","","bright_yellow","","","clear","","","conceal","","","cyan","","","deref","","","deref_mut","","","dim","","","display_tests_summary","drop","","","failed","failed_run_results","fg","","","filter_test_cases","find_testable_targets","fixed","","","from","","","gas_usage","green","","","ignored","init","","","internal_rewrite","","","","","","","","","","","","","","","","","","","","","into","","","invert","","","italic","","","linger","","","magenta","","","mask","","","on_black","","","on_blue","","","on_bright","","","on_bright_black","","","on_bright_blue","","","on_bright_cyan","","","on_bright_green","","","on_bright_magenta","","","on_bright_red","","","on_bright_white","","","on_bright_yellow","","","on_cyan","","","on_fixed","","","on_green","","","on_magenta","","","on_primary","","","on_red","","","on_rgb","","","on_white","","","on_yellow","","","passed","primary","","","quirk","","","rapid_blink","","","red","","","resetting","","","rgb","","","run_tests","status","strike","","","try_from","","","try_into","","","type_id","","","underline","","","upcast","","","upcast_mut","","","vzip","","","whenever","","","white","","","wrap","","","yellow","",""],"q":[[0,"scarb_native_test"],[284,"scarb_native_test::utils"],[463,"scarb_native_test::utils::test"],[718,"dyn_clone::sealed"],[719,"yansi::attr_quirk"],[720,"yansi::paint"],[721,"clap_builder::builder::command"],[722,"yansi::color"],[723,"std::path"],[724,"alloc::string"],[725,"cairo_lang_test_plugin"],[726,"anyhow"],[727,"core::fmt"],[728,"clap_builder::parser::matches::arg_matches"],[729,"clap_builder"],[730,"core::result"],[731,"clap_builder::util::id"],[732,"core::option"],[733,"cairo_lang_semantic::substitution"],[734,"cairo_lang_utils::ordered_hash_map"],[735,"alloc::vec"],[736,"alloc::boxed"],[737,"alloc::collections::vec_deque"],[738,"clap_builder::builder::possible_value"],[739,"core::any"],[740,"yansi::condition"],[741,"cairo_lang_sierra::program"],[742,"starknet_types_core::felt"],[743,"alloc::vec::into_iter"],[744,"cairo_native::values"],[745,"cairo_native::execution_result"],[746,"cairo_lang_runner"],[747,"scarb_metadata"],[748,"cairo_lang_test_plugin::test_config"],[749,"cairo_lang_sierra::ids"],[750,"cairo_lang_sierra::extensions::modules::gas"]],"i":"Ad`0``0Ab101Af111201201201201201201201201201201201201201201201201201212121112012020120120`12012012011201212011120111120111111122222220000000120120120120120`12021201201201201201201201201201201201201201201201201201201201201112012012012012012010120112212012012012012012011`20120120120120120Dl0``0Fj1010101010101010101010101010101010111101010101010101`011`01010100000001111111010101`010101010101010101010101010101010101010101010100101010101`01001`1101010101010110101010101Fl0```ElFn2102102102102102102102102102102102102102102102102102102102102102102`10211102``102102010211021111111000000022222221021021021021021021021021021021021021021021021021021021021021021021021021021021102102102102102102`0102102102102102102102102102102102102","f":"``````{{bd}f}0{{bh}{{j{{b{c}}}}}{}}00{ll}0{{bn}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000000000{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00222222222222222222222222222222{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{b{b{A`c}}}f{}}0{bf}0{{}l}0777777{{}Ad}{{}Af}{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{{{b{Aj}}Al}{{B`{An}}}}<<<{Ahf}00>>>`{{bBb}{{j{{b{c}}}}}{}}00{{{b{Ab}}{b{A`Bd}}}Bf}{{{b{Ad}}{b{A`Bd}}}Bf}{cc{}}00{{{b{Bh}}}{{Bl{AbBj}}}}{{{b{A`Bh}}}{{Bl{AbBj}}}}{b{{j{{b{c}}}}}{}}00{{}{{C`{Bn}}}}``{{}Ah}00{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}64105321623504{{}c{}}00::::::::::::{{}{{B`{f}}}};;;{{{b{Ad}}{b{Cn}}}D`}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<{{bBb}{{j{{b{c}}}}}{}}00============{{bBbBbBb}{{j{{b{c}}}}}{}}00>>>>>>``>>>{{bDb}{{j{{b{c}}}}}{}}00?????????111``???`{bc{}}0{{{b{Ad}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00{b{{j{{b{c}}}}}{}}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{A`Ab}}{b{Bh}}}{{Bl{fBj}}}}{{{b{A`Ab}}{b{A`Bh}}}{{Bl{fBj}}}}`{{}{{b{{Dh{Ad}}}}}}{{{b{A`Af}}AlAl}D`}{{}c{}}00{{bDj}{{j{{b{c}}}}}{}}00888888888````{{bd}f}{{bh}{{j{{b{c}}}}}{}}0{{bn}{{j{{b{c}}}}}{}}0;;;;;;;;::99;;;;;;;;;;;;;;;;;;;;{{{b{Dl}}}Dl}{{b{b{A`c}}}f{}}{bf}>>>>{Ah{{b{c}}}{}}0{Ah{{b{A`c}}}{}}0{b{{j{{b{c}}}}}{}}0{Ahf}077{{{b{Dn}}{b{Cn}}}{{B`{{b{E`}}}}}}{{bBb}{{j{{b{c}}}}}{}}0{{{b{Dl}}{b{A`Bd}}}Bf}{{{Ed{Eb}}}Al}{cc{}}066{{}Ah}0{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}3260145{{}c{}}0????{{{b{Ef}}}{{Cf{Eb}}}}{b{{j{{b{c}}}}}{}}00000000000000000000000000000>>00000000{{bBbBbBb}{{j{{b{c}}}}}{}}01111`11{{bDb}{{j{{b{c}}}}}{}}0222222{{{b{Eh}}}{{B`{Ej}}}}22`33`{bc{}}{{{b{Dl}}}{{C`{Dd}}}}{c{{Bl{e}}}{}{}}0{{}{{Bl{c}}}{}}0{bDf}088{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{}{{b{{Dh{Dl}}}}}}=={{bDj}{{j{{b{c}}}}}{}}0<<<<<<`````{{bh}{{j{{b{c}}}}}{}}00{{bn}{{j{{b{c}}}}}{}}00>>>>>>>>>>>>555444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>{Ah{{b{c}}}{}}00{Ah{{b{A`c}}}{}}00{b{{j{{b{c}}}}}{}}00{{{b{El}}Ah}f}{Ahf}00``555{{AnD`D`Al}{{Cl{AnAh}}}}{{{b{En}}}{{Cf{{b{F`}}}}}}{{bBb}{{j{{b{c}}}}}{}}00{cc{}}00`666`{{}Ah}00{{{b{A`}}{b{A`{C`{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cj{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Cf{c}}}}}{{Bl{Cbe}}}{}{}}{{{b{A`}}{b{A`{Bl{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Cd{ce}}}}}{{Bl{Cbg}}}{}{}{}}{{{b{A`}}{b{A`{Ch{c}}}}}{{Bl{Cbe}}}{}{}}63215044015632{{}c{}}00???????????????????????????????????????????????????:::????????????{{bBbBbBb}{{j{{b{c}}}}}{}}00{b{{j{{b{c}}}}}{}}00000`000{{bDb}{{j{{b{c}}}}}{}}00111111111222{{{Cf{{Cl{AlFb}}}}Dn{Cd{Fd{Cd{FfFh}}}}Fj}{{B`{El}}}}`222{c{{Bl{e}}}{}{}}00{{}{{Bl{c}}}{}}00{bDf}00555{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00999{{bDj}{{j{{b{c}}}}}{}}00888888888","D":"COj","p":[[1,"reference"],[5,"Private",718],[1,"unit"],[6,"Attribute",719],[5,"Painted",720],[5,"Command",721],[6,"Color",722],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",723],[5,"String",724],[5,"TestCompilation",725],[8,"Result",726],[1,"u8"],[5,"Formatter",727],[8,"Result",727],[5,"ArgMatches",728],[8,"Error",729],[6,"Result",730],[5,"Id",731],[6,"Option",732],[6,"RewriteResult",733],[5,"OrderedHashMap",734],[5,"Vec",735],[5,"Box",736],[5,"VecDeque",737],[1,"tuple"],[1,"str"],[1,"bool"],[6,"Quirk",719],[5,"PossibleValue",738],[5,"TypeId",739],[1,"slice"],[5,"Condition",740],[6,"RunMode",284],[5,"Program",741],[8,"Function",741],[5,"Felt",742],[5,"IntoIter",743],[6,"Value",744],[5,"ExecutionResult",745],[6,"RunResultValue",746],[5,"TestsSummary",463],[5,"PackageMetadata",747],[5,"TargetMetadata",747],[5,"TestConfig",748],[5,"FunctionId",749],[6,"CostTokenType",750],[1,"i32"],[5,"RunArgs",284],[6,"TestStatus",463],[5,"TestResult",463]],"r":[],"b":[],"c":"OzAAAAEAAAcAAwA+AAIARAEBAAgCAgA=","e":"OzAAAAEAANEAJQAAAAEAAwAFAAwAAQAdAAUAQQAHAE8ACABbAAIAZQABAGoAAQBvAAAAcgAXAJkAAACdAAAA2wAAAO8AAAD0AAsAAwEJAA4BAgAdAQQALgEDAEYBAgBNAQMAUwEBAFoBAABgAQ8ApQEAALMBAAC2AQgAwQEGANABAQDnAQUAEQIFABsCBAAvAhgAlgIAAK4CCAC6AggA"}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[80988,4248,4400,10771,2697,4820,10005,7613,11631]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[80978,4248,4400,10771,2697,4820,10005,7613,11631]}
\ No newline at end of file
diff --git a/settings.html b/settings.html
index 267049dc2..d5cca9ee8 100644
--- a/settings.html
+++ b/settings.html
@@ -1 +1 @@
-Settings Rustdoc settings
Back
\ No newline at end of file
+Settings Rustdoc settings
Back
\ No newline at end of file
diff --git a/src/cairo_native/arch/x86_64.rs.html b/src/cairo_native/arch/x86_64.rs.html
index 89667bdbc..ea9668373 100644
--- a/src/cairo_native/arch/x86_64.rs.html
+++ b/src/cairo_native/arch/x86_64.rs.html
@@ -210,45 +210,6 @@
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
//! # Implementations of `AbiArgument` for the `x86_64` architecture.
//!
//! The x86_64 architecture uses 6 64-bit registers for arguments. This means that the first 48
@@ -271,93 +232,55 @@
impl AbiArgument for bool {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(1).align());
- buffer.push((*self) as u8);
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u8 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(8).align());
- buffer.push(*self);
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i8 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(8).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u16 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(16).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i16 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(16).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u32 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(32).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for i32 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() < 48 {
- buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
- } else {
- align_to(buffer, get_integer_layout(32).align());
- buffer.extend_from_slice(&self.to_ne_bytes());
- }
+ buffer.extend_from_slice(&(*self as u64).to_ne_bytes());
Ok(())
}
}
impl AbiArgument for u64 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() >= 48 {
- align_to(buffer, get_integer_layout(64).align());
- }
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -365,9 +288,6 @@
impl AbiArgument for i64 {
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
- if buffer.len() >= 48 {
- align_to(buffer, get_integer_layout(64).align());
- }
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -378,6 +298,7 @@
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(128).align());
}
+
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -388,6 +309,7 @@
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(128).align());
}
+
buffer.extend_from_slice(&self.to_ne_bytes());
Ok(())
}
@@ -415,13 +337,13 @@
fn to_bytes(&self, buffer: &mut Vec<u8>) -> Result<(), Error> {
// The `bytes31` type is treated as a 248-bit integer, therefore it follows the same
// splitting rules as them.
+
if buffer.len() >= 40 {
align_to(buffer, get_integer_layout(252).align());
}
buffer.extend_from_slice(self);
buffer.push(0);
-
Ok(())
}
}
diff --git a/src/cairo_native/executor.rs.html b/src/cairo_native/executor.rs.html
index 79b0e4508..73a2f1b74 100644
--- a/src/cairo_native/executor.rs.html
+++ b/src/cairo_native/executor.rs.html
@@ -766,6 +766,8 @@
766
767
768
+769
+770
//! # Executors
//!
//! This module provides methods to execute the programs, either via JIT or compiled ahead
@@ -1119,7 +1121,6 @@
#[cfg(target_arch = "aarch64")] mut ret_registers: [u64; 4],
) -> Result<Value, Error> {
let type_info = registry.get_type(type_id)?;
- let debug_name = type_info.info().long_id.to_string();
// Align the pointer to the actual return value.
if let Some(return_ptr) = &mut return_ptr {
@@ -1141,11 +1142,12 @@
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?),
CoreTypeConcrete::Box(info) => unsafe {
let ptr =
return_ptr.unwrap_or_else(|| NonNull::new_unchecked(ret_registers[0] as *mut ()));
- let value = Value::from_ptr(ptr, &info.ty, registry)?;
+ let value = Value::from_ptr(ptr, &info.ty, registry, true)?;
libc_free(ptr.cast().as_ptr());
Ok(value)
},
@@ -1153,6 +1155,7 @@
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?),
CoreTypeConcrete::Felt252(_)
| CoreTypeConcrete::StarkNet(
@@ -1161,7 +1164,7 @@
| StarkNetTypeConcrete::StorageAddress(_)
| StarkNetTypeConcrete::StorageBaseAddress(_),
) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
#[cfg(target_arch = "x86_64")]
// Since x86_64's return values hold at most two different 64bit registers,
@@ -1180,7 +1183,7 @@
}
},
CoreTypeConcrete::Bytes31(_) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
#[cfg(target_arch = "x86_64")]
// Since x86_64's return values hold at most two different 64bit registers,
@@ -1195,7 +1198,7 @@
}
},
CoreTypeConcrete::BoundedInt(info) => match return_ptr {
- Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry)?),
+ Some(return_ptr) => Ok(Value::from_ptr(return_ptr, type_id, registry, true)?),
None => {
let mut data = if info.range.offset_bit_width() <= 64 {
BigInt::from(ret_registers[0])
@@ -1267,7 +1270,7 @@
Ok(Value::Null)
} else {
let ptr = NonNull::new_unchecked(ptr);
- let value = Value::from_ptr(ptr, &info.ty, registry)?;
+ let value = Value::from_ptr(ptr, &info.ty, registry, true)?;
libc_free(ptr.as_ptr().cast());
Ok(value)
}
@@ -1323,7 +1326,7 @@
}
};
let value = match ptr {
- Ok(ptr) => Box::new(Value::from_ptr(ptr, &info.variants[tag], registry)?),
+ Ok(ptr) => Box::new(Value::from_ptr(ptr, &info.variants[tag], registry, true)?),
Err(offset) => {
ret_registers.copy_within(offset.., 0);
Box::new(parse_result(
@@ -1338,27 +1341,28 @@
Ok(Value::Enum {
tag,
value,
- debug_name: Some(debug_name),
+ debug_name: Some(type_info.info().long_id.to_string()),
})
}
CoreTypeConcrete::Struct(info) => {
if info.members.is_empty() {
Ok(Value::Struct {
fields: Vec::new(),
- debug_name: Some(debug_name),
+ debug_name: Some(type_info.info().long_id.to_string()),
})
} else {
Ok(Value::from_ptr(
return_ptr.to_native_assert_error("return pointer should be valid")?,
type_id,
registry,
+ true,
)?)
}
}
CoreTypeConcrete::Felt252Dict(_) | CoreTypeConcrete::SquashedFelt252Dict(_) => unsafe {
let ptr = return_ptr
.unwrap_or_else(|| NonNull::new_unchecked((&raw mut ret_registers[0]) as *mut ()));
- Ok(Value::from_ptr(ptr, type_id, registry)?)
+ Ok(Value::from_ptr(ptr, type_id, registry, true)?)
},
CoreTypeConcrete::Snapshot(info) => {
diff --git a/src/cairo_native/executor/contract.rs.html b/src/cairo_native/executor/contract.rs.html
index 67b25e846..2ccbbdc54 100644
--- a/src/cairo_native/executor/contract.rs.html
+++ b/src/cairo_native/executor/contract.rs.html
@@ -831,6 +831,24 @@
831
832
833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
//! A specialized executor for Starknet contracts, avoiding the overhead of storing the sierra program registry and
//! enabling efficient serialization of the program/data once compiled.
//!
@@ -867,7 +885,7 @@
use crate::{
arch::AbiArgument,
context::NativeContext,
- error::{panic::ToNativeAssertError, Error},
+ error::{panic::ToNativeAssertError, Error, Result},
execution_result::{BuiltinStats, ContractExecutionResult},
executor::invoke_trampoline,
metadata::gas::MetadataComputationConfig,
@@ -979,7 +997,7 @@
sierra_program: &Program,
entry_points: &ContractEntryPoints,
opt_level: OptLevel,
- ) -> Result<Self, Error> {
+ ) -> Result<Self> {
let native_context = NativeContext::new();
let mut entry_point_selector_to_id = BTreeMap::new();
@@ -1094,7 +1112,7 @@
}
/// Save the library to the desired path, alongside it is saved also a json file with additional info.
- pub fn save(&mut self, to: impl AsRef<Path>) -> Result<(), Error> {
+ pub fn save(&mut self, to: impl AsRef<Path>) -> Result<()> {
let to = to.as_ref();
std::fs::copy(&self.path, to)?;
@@ -1109,7 +1127,7 @@
}
/// Load the executor from an already compiled library with the additional info json file.
- pub fn load(library_path: &Path) -> Result<Self, Error> {
+ pub fn load(library_path: &Path) -> Result<Self> {
let info_str = std::fs::read_to_string(library_path.with_extension("json"))?;
let contract_info: NativeContractInfo = serde_json::from_str(&info_str)?;
Ok(Self {
@@ -1136,7 +1154,7 @@
gas: u64,
builtin_costs: Option<BuiltinCosts>,
mut syscall_handler: impl StarknetSyscallHandler,
- ) -> Result<ContractExecutionResult, Error> {
+ ) -> Result<ContractExecutionResult> {
let arena = Bump::new();
let mut invoke_data = Vec::<u8>::new();
@@ -1150,12 +1168,7 @@
};
let function_ptr = self.find_function_ptr(&function_id, true)?;
- let builtin_costs = builtin_costs.unwrap_or_default();
- let builtin_costs_stack: [u64; 7] = builtin_costs.into();
- // Note: the ptr into a slice is valid, it can be used with cast()
- // Care should be taken if you dereference it and take the .as_ptr() of the slice, since when you
- // deref it, it will be a copy on the stack, so you will get the ptr of the value in the stack.
- let builtin_costs: *mut [u64; 7] = Box::into_raw(Box::new(builtin_costs_stack));
+ let builtin_costs: [u64; 7] = builtin_costs.unwrap_or_default().into();
let set_costs_builtin = unsafe {
self.library
.get::<extern "C" fn(*const u64) -> *const u64>(
@@ -1163,7 +1176,7 @@
)?
};
// We may be inside a recursive contract, save the possible saved builtin costs to restore it after our call.
- let old_builtincosts_ptr = set_costs_builtin(builtin_costs.cast());
+ let old_builtincosts_ptr = set_costs_builtin(builtin_costs.as_ptr());
// it can vary from contract to contract thats why we need to store/ load it.
let builtins_size: usize = self.contract_info.entry_points_info[&function_id.id]
@@ -1189,7 +1202,7 @@
}
BuiltinType::BuiltinCosts => {
// todo: check if valid
- builtin_costs_stack.as_ptr().to_bytes(&mut invoke_data)?;
+ builtin_costs.as_ptr().to_bytes(&mut invoke_data)?;
}
BuiltinType::System => {
(&mut syscall_handler as *mut StarknetSyscallHandlerCallbacks<_>)
@@ -1202,18 +1215,42 @@
}
let felt_layout = get_integer_layout(252).pad_to_align();
- let ptr: *mut () = unsafe { libc_malloc(felt_layout.size() * args.len()).cast() };
+ let refcount_offset = get_integer_layout(32)
+ .align_to(felt_layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size();
+
+ let ptr = match args.len() {
+ 0 => std::ptr::null_mut(),
+ _ => unsafe {
+ let ptr: *mut () =
+ libc_malloc(felt_layout.size() * args.len() + refcount_offset).cast();
+
+ // Write reference count.
+ ptr.cast::<u32>().write(1);
+ ptr.byte_add(refcount_offset)
+ },
+ };
let len: u32 = args
.len()
.try_into()
.to_native_assert_error("number of arguments should fit into a u32")?;
ptr.to_bytes(&mut invoke_data)?;
- 0u32.to_bytes(&mut invoke_data)?; // start
- len.to_bytes(&mut invoke_data)?; // end
- len.to_bytes(&mut invoke_data)?; // cap
+ if cfg!(target_arch = "aarch64") {
+ 0u32.to_bytes(&mut invoke_data)?; // start
+ len.to_bytes(&mut invoke_data)?; // end
+ len.to_bytes(&mut invoke_data)?; // cap
+ } else if cfg!(target_arch = "x86_64") {
+ (0u32 as u64).to_bytes(&mut invoke_data)?; // start
+ (len as u64).to_bytes(&mut invoke_data)?; // end
+ (len as u64).to_bytes(&mut invoke_data)?; // cap
+ } else {
+ unreachable!("unsupported architecture");
+ }
- for (idx, elem) in args.iter().enumerate() {
+ for (idx, elem) in args.iter().enumerate() {
let f = elem.to_bytes_le();
unsafe {
std::ptr::copy_nonoverlapping(
@@ -1354,7 +1391,12 @@
}
if !array_ptr.is_null() {
- unsafe { libc_free(array_ptr.cast()) };
+ unsafe {
+ let ptr = array_ptr.byte_sub(refcount_offset);
+ assert_eq!(ptr.cast::<u32>().read(), 1);
+
+ libc_free(ptr.cast());
+ }
}
let error_msg = if tag != 0 {
@@ -1371,14 +1413,8 @@
None
};
- // Restore the old ptr and get back our builtincost box and free it.
- let our_builtincosts_ptr = set_costs_builtin(old_builtincosts_ptr);
-
- if !our_builtincosts_ptr.is_null() && old_builtincosts_ptr.is_aligned() {
- unsafe {
- let _ = Box::<[u64; 7]>::from_raw(our_builtincosts_ptr.cast_mut().cast());
- };
- }
+ // Restore the original builtin costs pointer.
+ set_costs_builtin(old_builtincosts_ptr);
#[cfg(feature = "with-mem-tracing")]
crate::utils::mem_tracing::report_stats();
@@ -1395,7 +1431,7 @@
&self,
function_id: &FunctionId,
is_for_contract_executor: bool,
- ) -> Result<*mut c_void, Error> {
+ ) -> Result<*mut c_void> {
let function_name = generate_function_name(function_id, is_for_contract_executor);
let function_name = format!("_mlir_ciface_{function_name}");
diff --git a/src/cairo_native/libfuncs.rs.html b/src/cairo_native/libfuncs.rs.html
index e8fb9dcdb..78455dd94 100644
--- a/src/cairo_native/libfuncs.rs.html
+++ b/src/cairo_native/libfuncs.rs.html
@@ -632,9 +632,9 @@
Self::Const(selector) => self::r#const::build(
context, registry, entry, location, helper, metadata, selector,
),
- Self::Coupon(info) => {
- self::coupon::build(context, registry, entry, location, helper, metadata, info)
- }
+ Self::Coupon(selector) => self::coupon::build(
+ context, registry, entry, location, helper, metadata, selector,
+ ),
Self::CouponCall(info) => self::function_call::build(
context, registry, entry, location, helper, metadata, info,
),
diff --git a/src/cairo_native/libfuncs/array.rs.html b/src/cairo_native/libfuncs/array.rs.html
index c7616528f..070d7878a 100644
--- a/src/cairo_native/libfuncs/array.rs.html
+++ b/src/cairo_native/libfuncs/array.rs.html
@@ -2513,44 +2513,474 @@
2513
2514
2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
//! # Array libfuncs
-// TODO: A future possible improvement would be to put the array behind a double pointer and a
-// reference counter, to avoid unnecessary clones.
-
use super::LibfuncHelper;
use crate::{
- error::{panic::ToNativeAssertError, Error, Result},
+ error::{Error, Result, SierraAssertError},
metadata::{
- drop_overrides::DropOverridesMeta, realloc_bindings::ReallocBindingsMeta, MetadataStorage,
+ drop_overrides::DropOverridesMeta, dup_overrides::DupOverridesMeta,
+ realloc_bindings::ReallocBindingsMeta, MetadataStorage,
},
- native_assert, native_panic,
- types::TypeBuilder,
- utils::{BlockExt, GepIndex, ProgramRegistryExt},
+ utils::{get_integer_layout, BlockExt, GepIndex, ProgramRegistryExt},
};
use cairo_lang_sierra::{
extensions::{
array::{ArrayConcreteLibfunc, ConcreteMultiPopLibfunc},
core::{CoreLibfunc, CoreType, CoreTypeConcrete},
lib_func::{SignatureAndTypeConcreteLibfunc, SignatureOnlyConcreteLibfunc},
- ConcreteLibfunc,
+ types::InfoAndTypeConcreteType,
},
program_registry::ProgramRegistry,
};
use melior::{
dialect::{
arith::{self, CmpiPredicate},
- cf,
- llvm::{self, r#type::pointer},
- ods, scf,
+ cf, llvm, ods, scf,
},
ir::{
- attribute::{DenseI32ArrayAttribute, IntegerAttribute},
- r#type::IntegerType,
- Block, Location, Region, Value, ValueLike,
+ attribute::IntegerAttribute, r#type::IntegerType, Block, Location, Region, Value, ValueLike,
},
Context,
};
+use std::alloc::Layout;
/// Select and call the correct libfunc builder function from the selector.
pub fn build<'ctx, 'this>(
@@ -2566,15 +2996,33 @@
ArrayConcreteLibfunc::New(info) => {
build_new(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::Append(info) => {
- build_append(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::SpanFromTuple(info) => {
+ build_span_from_tuple(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::PopFront(info) => {
- build_pop_front(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::TupleFromSpan(info) => {
+ build_tuple_from_span(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::PopFrontConsume(info) => {
- build_pop_front_consume(context, registry, entry, location, helper, metadata, info)
+ ArrayConcreteLibfunc::Append(info) => {
+ build_append(context, registry, entry, location, helper, metadata, info)
}
+ ArrayConcreteLibfunc::PopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
+ ArrayConcreteLibfunc::PopFrontConsume(info) => build_pop::<true, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
ArrayConcreteLibfunc::Get(info) => {
build_get(context, registry, entry, location, helper, metadata, info)
}
@@ -2584,23 +3032,41 @@
ArrayConcreteLibfunc::Len(info) => {
build_len(context, registry, entry, location, helper, metadata, info)
}
- ArrayConcreteLibfunc::SnapshotPopFront(info) => {
- build_snapshot_pop_front(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SnapshotPopBack(info) => {
- build_snapshot_pop_back(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SpanFromTuple(info) => {
- build_span_from_tuple(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::TupleFromSpan(info) => {
- build_tuple_from_span(context, registry, entry, location, helper, metadata, info)
- }
- ArrayConcreteLibfunc::SnapshotMultiPopFront(info) => build_snapshot_multi_pop_front(
- context, registry, entry, location, helper, metadata, info,
+ ArrayConcreteLibfunc::SnapshotPopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
+ ),
+ ArrayConcreteLibfunc::SnapshotPopBack(info) => build_pop::<false, true>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Single(info),
),
- ArrayConcreteLibfunc::SnapshotMultiPopBack(info) => build_snapshot_multi_pop_back(
- context, registry, entry, location, helper, metadata, info,
+ ArrayConcreteLibfunc::SnapshotMultiPopFront(info) => build_pop::<false, false>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Multi(info),
+ ),
+ ArrayConcreteLibfunc::SnapshotMultiPopBack(info) => build_pop::<false, true>(
+ context,
+ registry,
+ entry,
+ location,
+ helper,
+ metadata,
+ PopInfo::Multi(info),
),
}
}
@@ -2608,37 +3074,33 @@
/// Generate MLIR operations for the `array_new` libfunc.
pub fn build_new<'ctx, 'this>(
context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ _registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureOnlyConcreteLibfunc,
+ _metadata: &mut MetadataStorage,
+ _info: &SignatureOnlyConcreteLibfunc,
) -> Result<()> {
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.branch_signatures()[0].vars[0].ty,
- )?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr = entry
- .append_op_result(ods::llvm::mlir_zero(context, pointer(context, 0), location).into())?;
+ let nullptr = entry.append_op_result(llvm::zero(ptr_ty, location))?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
- let k0 = entry.const_int(context, location, 0, 32)?;
- let value = entry.append_op_result(llvm::undef(array_ty, location))?;
- let value = entry.insert_value(context, location, value, ptr, 0)?;
- let value = entry.insert_value(context, location, value, k0, 1)?;
- let value = entry.insert_value(context, location, value, k0, 2)?;
- let value = entry.insert_value(context, location, value, k0, 3)?;
+ let value = entry.append_op_result(llvm::undef(
+ llvm::r#type::r#struct(context, &[ptr_ty, len_ty, len_ty, len_ty], false),
+ location,
+ ))?;
+ let value = entry.insert_values(context, location, value, &[nullptr, k0, k0, k0])?;
entry.append_operation(helper.br(0, &[value], location));
Ok(())
}
-/// Generate MLIR operations for the `array_append` libfunc.
-pub fn build_append<'ctx, 'this>(
+/// Generate MLIR operations for the `span_from_tuple` libfunc.
+///
+/// Note: The `&info.ty` field has the entire `[T; N]` tuple. It is not the `T` in `Array<T>`.
+pub fn build_span_from_tuple<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
@@ -2647,237 +3109,264 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- // Algorithm:
- // - If array_end < capacity, then append.
- // - If array_end == capacity:
- // - If array_start == 0: realloc, then append.
- // - If array_start != 0: memmove, then append.
-
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let tuple_len = {
+ let CoreTypeConcrete::Struct(info) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ info.members.len()
+ };
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
- let elem_stride = elem_layout.pad_to_align().size();
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
+ let (_, tuple_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
- let k1 = entry.const_int(context, location, 1, 32)?;
+ let array_len_bytes = tuple_layout.pad_to_align().size();
+ let array_len_bytes_with_offset = entry.const_int(
+ context,
+ location,
+ array_len_bytes + calc_refcount_offset(tuple_layout),
+ 64,
+ )?;
+ let array_len_bytes = entry.const_int(context, location, array_len_bytes, 64)?;
+ let array_len = entry.const_int_from_type(context, location, tuple_len, len_ty)?;
- let elem_stride = entry.const_int(context, location, elem_stride, 64)?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
+ let k1 = entry.const_int_from_type(context, location, 1, len_ty)?;
- let array_end = entry.extract_value(context, location, entry.arg(0)?, len_ty, 2)?;
- let array_capacity = entry.extract_value(context, location, entry.arg(0)?, len_ty, 3)?;
+ let array_ptr = entry.append_op_result(llvm::zero(ptr_ty, location))?;
+ let array_ptr = entry.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ array_ptr,
+ array_len_bytes_with_offset,
+ location,
+ )?)?;
+ entry.store(context, location, array_ptr, k1)?;
- let has_tail_space = entry.cmpi(
+ let array_ptr = entry.gep(
context,
- CmpiPredicate::Ult,
- array_end,
- array_capacity,
location,
+ array_ptr,
+ &[GepIndex::Const(calc_refcount_offset(tuple_layout) as i32)],
+ IntegerType::new(context, 8).into(),
)?;
+ entry.memcpy(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ array_ptr,
+ array_len_bytes,
+ );
+ entry.append_operation(ReallocBindingsMeta::free(
+ context,
+ entry.argument(0)?.into(),
+ location,
+ )?);
- let handle_block = helper.append_block(Block::new(&[]));
- let memmove_block = helper.append_block(Block::new(&[]));
- let realloc_block = helper.append_block(Block::new(&[]));
- let append_block = helper.append_block(Block::new(&[(array_ty, location)]));
-
- entry.append_operation(cf::cond_br(
+ let value = entry.append_op_result(llvm::undef(
+ llvm::r#type::r#struct(context, &[ptr_ty, len_ty, len_ty, len_ty], false),
+ location,
+ ))?;
+ let value = entry.insert_values(
context,
- has_tail_space,
- append_block,
- handle_block,
- &[entry.arg(0)?],
- &[],
location,
- ));
+ value,
+ &[array_ptr, k0, array_len, array_len],
+ )?;
- {
- let k0 = handle_block.const_int(context, location, 0, 32)?;
- let array_start =
- handle_block.extract_value(context, location, entry.arg(0)?, len_ty, 1)?;
+ entry.append_operation(helper.br(0, &[value], location));
+ Ok(())
+}
- let has_head_space =
- handle_block.cmpi(context, CmpiPredicate::Ne, array_start, k0, location)?;
- handle_block.append_operation(cf::cond_br(
- context,
- has_head_space,
- memmove_block,
- realloc_block,
- &[],
- &[],
- location,
- ));
- }
+/// Generate MLIR operations for the `tuple_from_span` libfunc.
+///
+/// Note: The `&info.ty` field has the entire `[T; N]` tuple. It is not the `T` in `Array<T>`.
+pub fn build_tuple_from_span<'ctx, 'this>(
+ context: &'ctx Context,
+ registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ entry: &'this Block<'ctx>,
+ location: Location<'ctx>,
+ helper: &LibfuncHelper<'ctx, 'this>,
+ metadata: &mut MetadataStorage,
+ info: &SignatureAndTypeConcreteLibfunc,
+) -> Result<()> {
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
- {
- let array_start =
- memmove_block.extract_value(context, location, entry.arg(0)?, len_ty, 1)?;
+ let elem_id = {
+ let CoreTypeConcrete::Snapshot(info) =
+ registry.get_type(&info.signature.param_signatures[0].ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+ let CoreTypeConcrete::Array(info) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let start_offset =
- memmove_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let start_offset = memmove_block.muli(start_offset, elem_stride, location)?;
+ &info.ty
+ };
+ let tuple_len_const = {
+ let CoreTypeConcrete::Struct(param) = registry.get_type(&info.ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
- let dst_ptr = memmove_block.extract_value(context, location, entry.arg(0)?, ptr_ty, 0)?;
- let src_ptr = memmove_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- dst_ptr,
- &[start_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ param.members.len()
+ };
- let array_len =
- memmove_block.append_op_result(arith::subi(array_end, array_start, location))?;
- let memmove_len =
- memmove_block.extui(array_len, IntegerType::new(context, 64).into(), location)?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
+ let (_, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, elem_id)?;
+ let (tuple_ty, tuple_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
- let memmove_len = memmove_block.muli(memmove_len, elem_stride, location)?;
- memmove_block.append_operation(
- ods::llvm::intr_memmove(
- context,
- dst_ptr,
- src_ptr,
- memmove_len,
- IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
- location,
- )
- .into(),
- );
+ let array_ptr = entry.extract_value(context, location, entry.argument(0)?.into(), ptr_ty, 0)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
- let k0 = memmove_block.const_int_from_type(context, location, 0, len_ty)?;
- let value = memmove_block.insert_value(context, location, entry.arg(0)?, k0, 1)?;
- let value = memmove_block.insert_value(context, location, value, array_len, 2)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let tuple_len = entry.const_int_from_type(context, location, tuple_len_const, len_ty)?;
+ let len_matches = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Eq,
+ array_len,
+ tuple_len,
+ location,
+ ))?;
- memmove_block.append_operation(cf::br(append_block, &[value], location));
- }
+ let valid_block = helper.append_block(Block::new(&[]));
+ let error_block = helper.append_block(Block::new(&[]));
+ entry.append_operation(cf::cond_br(
+ context,
+ len_matches,
+ valid_block,
+ error_block,
+ &[],
+ &[],
+ location,
+ ));
+
+ // Ensure the type's clone and drop implementations are registered.
+ registry.build_type(
+ context,
+ helper,
+ registry,
+ metadata,
+ &info.signature.param_signatures[0].ty,
+ )?;
{
- let k8 = realloc_block.const_int(context, location, 8, 32)?;
- let k1024 = realloc_block.const_int(context, location, 1024, 32)?;
-
- // Array allocation growth formula:
- // new_len = max(8, old_len + min(1024, 2 * old_len));
- let new_capacity = realloc_block.shli(array_end, k1, location)?;
- let new_capacity =
- realloc_block.append_op_result(arith::minui(new_capacity, k1024, location))?;
- let new_capacity = realloc_block.addi(new_capacity, array_end, location)?;
- let new_capacity =
- realloc_block.append_op_result(arith::maxui(new_capacity, k8, location))?;
-
- let realloc_size = {
- let new_capacity = realloc_block.extui(
- new_capacity,
- IntegerType::new(context, 64).into(),
- location,
- )?;
- realloc_block.muli(new_capacity, elem_stride, location)?
- };
+ let value_size = valid_block.const_int(context, location, tuple_layout.size(), 64)?;
- let ptr = realloc_block.extract_value(context, location, entry.arg(0)?, ptr_ty, 0)?;
- let ptr = realloc_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- ptr,
- realloc_size,
- location,
+ let value = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context, value, value_size, location,
)?)?;
- // No need to memmove, guaranteed by the fact that if we needed to memmove we'd have gone
- // through the memmove block instead of reallocating.
-
- let value = realloc_block.insert_value(context, location, entry.arg(0)?, ptr, 0)?;
- let value = realloc_block.insert_value(context, location, value, new_capacity, 3)?;
-
- realloc_block.append_operation(cf::br(append_block, &[value], location));
- }
-
- {
- let ptr = append_block.extract_value(context, location, append_block.arg(0)?, ptr_ty, 0)?;
- let array_end =
- append_block.extract_value(context, location, append_block.arg(0)?, len_ty, 2)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- let offset =
- append_block.extui(array_end, IntegerType::new(context, 64).into(), location)?;
- let offset = append_block.muli(offset, elem_stride, location)?;
- let ptr = append_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ let array_start_offset = valid_block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
location,
))?;
+ let array_start_offset = valid_block.append_op_result(arith::muli(
+ array_start_offset,
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?,
+ location,
+ ))?;
+ let array_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(array_start_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- append_block.store(context, location, ptr, entry.arg(1)?)?;
-
- let array_len = append_block.addi(array_end, k1, location)?;
- let value =
- append_block.insert_value(context, location, append_block.arg(0)?, array_len, 2)?;
-
- append_block.append_operation(helper.br(0, &[value], location));
- }
-
- Ok(())
-}
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let src_ptr = array_ptr;
+ let dst_ptr = value;
+
+ let value = block.load(context, location, src_ptr, tuple_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, src_ptr, values.0)?;
+ block.store(context, location, dst_ptr, values.1)?;
+ }
+ _ => block.memcpy(context, location, array_ptr, value, value_size),
+ }
-/// Generate MLIR operations for the `array_len` libfunc.
-pub fn build_len<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ // The following unwrap should be unreachable because an array always has a drop
+ // implementation.
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_value = entry.arg(0)?;
+ block.memcpy(context, location, array_ptr, value, value_size);
- let array_start = entry.extract_value(context, location, array_value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, array_value, len_ty, 2)?;
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ valid_block.append_operation(helper.br(0, &[value], location));
+ }
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta)
- if drop_overrides_meta.is_overriden(&info.signature.param_signatures[0].ty) =>
- {
- drop_overrides_meta.invoke_override(
+ {
+ metadata
+ .get::<DropOverridesMeta>()
+ .ok_or(Error::MissingMetadata)?
+ .invoke_override(
context,
- entry,
+ error_block,
location,
&info.signature.param_signatures[0].ty,
- entry.arg(0)?,
+ entry.argument(0)?.into(),
)?;
- }
- _ => {}
+
+ error_block.append_operation(helper.br(1, &[], location));
}
- entry.append_operation(helper.br(0, &[array_len], location));
Ok(())
}
-/// Generate MLIR operations for the `array_get` libfunc.
-pub fn build_get<'ctx, 'this>(
+/// Generate MLIR operations for the `array_append` libfunc.
+pub fn build_append<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
@@ -2886,720 +3375,1116 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = super::increment_builtin_counter(context, entry, location, entry.arg(0)?)?;
-
- let array_ty = registry.build_type(
+ /*
+ * 1. Check if shared.
+ * 2. If shared:
+ * 1. Deep clone with space for at least 1 extra element.
+ * 3. If not shared:
+ * 1. Either realloc, move or do nothing.
+ * 4. Append element.
+ */
+
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
+
+ let self_ty = registry.build_type(
context,
helper,
registry,
metadata,
- &info.param_signatures()[1].ty,
+ &info.signature.param_signatures[0].ty,
)?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
- let elem_stride = elem_layout.pad_to_align().size();
- let elem_ty = elem_ty.build(context, helper, registry, metadata, &info.ty)?;
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride = entry.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let value = entry.arg(1)?;
- let index = entry.arg(2)?;
+ let k0 = entry.const_int(context, location, 0, 32)?;
+ let k1 = entry.const_int(context, location, 1, 32)?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
+ let array_ptr = entry.extract_value(context, location, entry.argument(0)?.into(), ptr_ty, 0)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
+ let array_capacity =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 3)?;
let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let is_valid = entry.cmpi(context, CmpiPredicate::Ult, index, array_len, location)?;
+ let array_size = entry.append_op_result(arith::extui(
+ array_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let array_size = entry.append_op_result(arith::muli(array_size, elem_stride, location))?;
- let valid_block = helper.append_block(Block::new(&[]));
- let error_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let data_offset = entry.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let data_offset = entry.append_op_result(arith::muli(data_offset, elem_stride, location))?;
+ let data_ptr = entry.gep(
context,
- is_valid,
- valid_block,
- error_block,
- &[],
- &[],
location,
- ));
+ array_ptr,
+ &[GepIndex::Value(data_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- {
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ fn compute_next_capacity<'ctx, 'this>(
+ context: &'ctx Context,
+ block: &'this Block<'ctx>,
+ location: Location<'ctx>,
+ elem_stride: Value<'ctx, 'this>,
+ array_end: Value<'ctx, 'this>,
+ ) -> Result<(Value<'ctx, 'this>, Value<'ctx, 'this>)> {
+ let len_ty = IntegerType::new(context, 32).into();
+
+ let k1 = block.const_int_from_type(context, location, 1, len_ty)?;
+ let k8 = block.const_int_from_type(context, location, 8, len_ty)?;
+ let k1024 = block.const_int_from_type(context, location, 1024, len_ty)?;
+
+ let realloc_len = block.append_op_result(arith::shli(array_end, k1, location))?;
+ let realloc_len = block.append_op_result(arith::minui(realloc_len, k1024, location))?;
+ let realloc_len = block.append_op_result(arith::addi(realloc_len, array_end, location))?;
+ let realloc_len = block.append_op_result(arith::maxui(realloc_len, k8, location))?;
+
+ let realloc_size = block.append_op_result(arith::extui(
+ realloc_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let realloc_size =
+ block.append_op_result(arith::muli(realloc_size, elem_stride, location))?;
- let array_start =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let index = {
- let index = valid_block.extui(index, IntegerType::new(context, 64).into(), location)?;
- valid_block.addi(array_start, index, location)?
- };
+ Result::Ok((realloc_len, realloc_size))
+ }
- let elem_stride = valid_block.const_int(context, location, elem_stride, 64)?;
- let elem_offset = valid_block.muli(elem_stride, index, location)?;
+ let is_empty = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Eq,
+ array_capacity,
+ k0,
+ location,
+ ))?;
- let elem_ptr = valid_block.gep(
- context,
- location,
- ptr,
- &[GepIndex::Value(elem_offset)],
- IntegerType::new(context, 8).into(),
- )?;
+ let is_shared = entry.append_op_result(scf::r#if(
+ is_empty,
+ &[IntegerType::new(context, 1).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
+ let k0 = block.const_int(context, location, 0, 1)?;
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
- location,
- target_ptr,
- "realloc returned nullptr",
- )?;
+ block.append_operation(scf::r#yield(&[k0], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- // There's no need to clone it since we're moving it out of the array.
- valid_block.memcpy(context, location, elem_ptr, target_ptr, elem_size);
+ let is_shared = is_shared(context, entry, location, array_ptr, elem_layout)?;
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
- let array_end =
- valid_block.extui(array_end, IntegerType::new(context, 64).into(), location)?;
+ block.append_operation(scf::r#yield(&[is_shared], location));
+ region
+ },
+ location,
+ ))?;
- let array_start = valid_block.muli(array_start, elem_stride, location)?;
- let array_end = valid_block.muli(array_end, elem_stride, location)?;
+ let value = entry.append_op_result(scf::r#if(
+ is_shared,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- valid_block.append_operation(scf::r#for(
- array_start,
- array_end,
- elem_stride,
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
+ let has_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ugt,
+ array_capacity,
+ array_len,
+ location,
+ ))?;
- let value_ptr = block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[block.arg(0)?],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ let op = block.append_operation(scf::r#if(
+ has_space,
+ &[len_ty, IntegerType::new(context, 64).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let is_target_element = block.append_op_result(
- ods::llvm::icmp(
- context,
- IntegerType::new(context, 1).into(),
- value_ptr,
- elem_ptr,
- IntegerAttribute::new(IntegerType::new(context, 64).into(), 0)
- .into(),
- location,
- )
- .into(),
- )?;
- block.append_operation(scf::r#if(
- is_target_element,
- &[],
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[]));
+ let clone_size = block.append_op_result(arith::extui(
+ array_capacity,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let clone_size =
+ block.append_op_result(arith::muli(clone_size, elem_stride, location))?;
+
+ block.append_operation(scf::r#yield(&[array_capacity, clone_size], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let (realloc_capacity, realloc_size) =
+ compute_next_capacity(context, &block, location, elem_stride, array_end)?;
+
+ block.append_operation(scf::r#yield(
+ &[realloc_capacity, realloc_size],
+ location,
+ ));
+ region
+ },
+ location,
+ ));
+ let clone_capacity = op.result(0)?.into();
+ let clone_size = op.result(1)?.into();
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[]));
+ let clone_size_with_refcount = block.append_op_result(arith::addi(
+ clone_size,
+ block.const_int(context, location, calc_refcount_offset(elem_layout), 64)?,
+ location,
+ ))?;
- let value = block.load(context, location, value_ptr, elem_ty)?;
- drop_overrides_meta
- .invoke_override(context, &block, location, &info.ty, value)?;
+ let clone_ptr = block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let clone_ptr = block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ clone_ptr,
+ clone_size_with_refcount,
+ location,
+ )?)?;
+ block.store(context, location, clone_ptr, k1)?;
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- location,
- ));
+ let clone_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- location,
- ));
- }
- _ => {}
- }
- valid_block.append_operation(ReallocBindingsMeta::free(context, ptr, location)?);
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let k0 = block.const_int(context, location, 0, 64)?;
+ block.append_operation(scf::r#for(
+ k0,
+ array_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
- valid_block.append_operation(helper.br(0, &[range_check, target_ptr], location));
- }
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, array_ptr, clone_ptr, clone_size),
+ }
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
- context,
- error_block,
- location,
- &info.param_signatures()[1].ty,
- value,
- )?;
- error_block.append_operation(helper.br(1, &[range_check], location));
+ let clone_value = block.append_op_result(llvm::zero(self_ty, location))?;
+ let clone_value = block.insert_values(
+ context,
+ location,
+ clone_value,
+ &[clone_ptr, k0, array_len, clone_capacity],
+ )?;
- Ok(())
-}
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
-/// Generate MLIR operations for the `array_pop_front` libfunc.
-pub fn build_pop_front<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ block.append_operation(scf::r#yield(&[clone_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let has_tail_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ult,
+ array_end,
+ array_capacity,
+ location,
+ ))?;
+ let array_value = block.append_op_result(scf::r#if(
+ has_tail_space,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.append_operation(scf::r#yield(&[entry.argument(0)?.into()], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let has_head_space = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ugt,
+ array_start,
+ k0,
+ location,
+ ))?;
+ let array_value = block.append_op_result(scf::r#if(
+ has_head_space,
+ &[self_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.append_operation(
+ ods::llvm::intr_memmove(
+ context,
+ array_ptr,
+ data_ptr,
+ array_size,
+ IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
+ location,
+ )
+ .into(),
+ );
+
+ let array_value = block.insert_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ k0,
+ 1,
+ )?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 2)?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let offset_array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let array_ptr = block.append_op_result(arith::select(
+ is_empty,
+ array_ptr,
+ offset_array_ptr,
+ location,
+ ))?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let (realloc_len, realloc_size) = compute_next_capacity(
+ context,
+ &block,
+ location,
+ elem_stride,
+ array_end,
+ )?;
+ let realloc_size_with_refcount =
+ block.append_op_result(arith::addi(
+ realloc_size,
+ block.const_int(
+ context,
+ location,
+ calc_refcount_offset(elem_layout),
+ 64,
+ )?,
+ location,
+ ))?;
+
+ let array_ptr =
+ block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ array_ptr,
+ realloc_size_with_refcount,
+ location,
+ )?)?;
+
+ let ref_count = block.load(context, location, array_ptr, len_ty)?;
+ let ref_count = block.append_op_result(arith::select(
+ is_empty, k1, ref_count, location,
+ ))?;
+ block.store(context, location, array_ptr, ref_count)?;
+
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let array_value = block.insert_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ array_ptr,
+ 0,
+ )?;
+ let array_value = block.insert_value(
+ context,
+ location,
+ array_value,
+ realloc_len,
+ 3,
+ )?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
- let value = entry.arg(0)?;
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ location,
+ ))?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
+ let array_ptr = entry.extract_value(context, location, value, ptr_ty, 0)?;
let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
-
- let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let data_offset = entry.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let data_offset = entry.append_op_result(arith::muli(data_offset, elem_stride, location))?;
+ let data_ptr = entry.gep(
context,
- is_empty,
- empty_block,
- valid_block,
- &[],
- &[],
location,
- ));
-
- {
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
-
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
-
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
- location,
- target_ptr,
- "realloc returned nullptr",
- )?;
-
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
-
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_start = valid_block.addi(array_start, k1, location)?;
- let value = valid_block.insert_value(context, location, value, new_start, 1)?;
+ array_ptr,
+ &[GepIndex::Value(data_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ entry.store(context, location, data_ptr, entry.argument(1)?.into())?;
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
- }
+ let array_end = entry.append_op_result(arith::addi(array_end, k1, location))?;
+ let value = entry.insert_value(context, location, value, array_end, 2)?;
- empty_block.append_operation(helper.br(1, &[value], location));
+ entry.append_operation(helper.br(0, &[value], location));
Ok(())
}
-/// Generate MLIR operations for the `array_pop_front_consume` libfunc.
-pub fn build_pop_front_consume<'ctx, 'this>(
+#[derive(Clone, Copy)]
+enum PopInfo<'a> {
+ Single(&'a SignatureAndTypeConcreteLibfunc),
+ Multi(&'a ConcreteMultiPopLibfunc),
+}
+
+/// Generate MLIR operations for the `array_pop_*` libfuncs.
+///
+/// Template arguments:
+/// - Consume: Whether to consume or not the array on failure.
+/// - Reverse: False for front-popping, true for back-popping.
+///
+/// The `info` argument contains how many items to pop.
+fn build_pop<'ctx, 'this, const CONSUME: bool, const REVERSE: bool>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
+ info: PopInfo,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ /*
+ * 1. Check if there's enough data to pop.
+ * 2. If there is not enough data, maybe consume and return.
+ * 3. Allocate output.
+ * 4. Clone or copy the popped data.
+ * - Clone if shared.
+ * - Copy if not shared.
+ */
+
+ metadata.get_or_insert_with(|| ReallocBindingsMeta::new(context, helper));
+
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let (self_ty, elem_ty, array_value, extract_len, mut branch_values) = match info {
+ PopInfo::Single(info) => (
+ &info.signature.param_signatures[0].ty,
+ &info.ty,
+ entry.argument(0)?.into(),
+ 1,
+ Vec::new(),
+ ),
+ PopInfo::Multi(ConcreteMultiPopLibfunc {
+ popped_ty,
+ signature,
+ }) => {
+ let range_check = super::increment_builtin_counter(
+ context,
+ entry,
+ location,
+ entry.argument(0)?.into(),
+ )?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let CoreTypeConcrete::Snapshot(InfoAndTypeConcreteType { ty, .. }) =
+ registry.get_type(&signature.param_signatures[1].ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+
+ let CoreTypeConcrete::Array(InfoAndTypeConcreteType { ty, .. }) =
+ registry.get_type(ty)?
+ else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+
+ let CoreTypeConcrete::Struct(info) = registry.get_type(popped_ty)? else {
+ return Err(Error::SierraAssert(SierraAssertError::BadTypeInfo));
+ };
+ debug_assert!(info.members.iter().all(|member_ty| member_ty == ty));
+
+ (
+ &signature.param_signatures[1].ty,
+ ty,
+ entry.argument(1)?.into(),
+ info.members.len(),
+ vec![range_check],
+ )
+ }
+ };
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ registry.build_type(context, helper, registry, metadata, self_ty)?;
+ let extract_len_value = entry.const_int_from_type(context, location, extract_len, len_ty)?;
- let value = entry.arg(0)?;
+ let (elem_type, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, elem_ty)?;
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
+ let array_start = entry.extract_value(context, location, array_value, len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, array_value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let has_enough_data = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ule,
+ extract_len_value,
+ array_len,
+ location,
+ ))?;
let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
+ let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
- is_empty,
- empty_block,
+ has_enough_data,
valid_block,
+ error_block,
&[],
&[],
location,
));
{
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ // Clone branch_values so that it doesn't interfere with the other branch.
+ let mut branch_values = branch_values.clone();
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
-
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
+ let value_size = valid_block.const_int(
context,
- valid_block,
location,
- target_ptr,
- "realloc returned nullptr",
+ elem_layout.pad_to_align().size() * extract_len,
+ 64,
)?;
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
+ let value_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context, value_ptr, value_size, location,
+ )?)?;
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_start = valid_block.addi(array_start, k1, location)?;
- let value = valid_block.insert_value(context, location, value, new_start, 1)?;
+ let array_ptr = valid_block.extract_value(context, location, array_value, ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
- }
+ let data_ptr = {
+ let offset_elems = if REVERSE {
+ valid_block.append_op_result(arith::subi(array_end, extract_len_value, location))?
+ } else {
+ array_start
+ };
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
- context,
- empty_block,
- location,
- &info.param_signatures()[0].ty,
- value,
- )?;
- empty_block.append_operation(helper.br(1, &[], location));
-
- Ok(())
-}
-
-/// Generate MLIR operations for the `array_snapshot_pop_front` libfunc.
-pub fn build_snapshot_pop_front<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- build_pop_front(context, registry, entry, location, helper, metadata, info)
-}
+ let offset = valid_block.append_op_result(arith::extui(
+ offset_elems,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
+ let offset =
+ valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
-/// Generate MLIR operations for the `array_snapshot_pop_back` libfunc.
-pub fn build_snapshot_pop_back<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
+ valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?
+ };
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[0].ty,
- )?;
+ let new_array_ptr = valid_block.append_op_result(scf::r#if(
+ is_shared,
+ &[ptr_ty],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let k0 = block.const_int(context, location, 0, 64)?;
+ let k1 = block.const_int_from_type(context, location, 1, len_ty)?;
+
+ let elem_stride =
+ block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(elem_ty) => {
+ block.append_operation(scf::r#for(
+ k0,
+ value_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ value_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_type)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, elem_ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, data_ptr, value_ptr, value_size),
+ }
- let ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
+ let array_ptr = {
+ let array_len_bytes =
+ block.append_op_result(arith::subi(array_len, k1, location))?;
+ let array_len_bytes = block.append_op_result(arith::extui(
+ array_len_bytes,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let array_len_bytes = block.append_op_result(arith::muli(
+ array_len_bytes,
+ elem_stride,
+ location,
+ ))?;
+ let array_len_bytes = block.append_op_result(arith::addi(
+ array_len_bytes,
+ block.const_int(
+ context,
+ location,
+ calc_refcount_offset(elem_layout),
+ 64,
+ )?,
+ location,
+ ))?;
+
+ let clone_ptr = block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let clone_ptr = block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ clone_ptr,
+ array_len_bytes,
+ location,
+ )?)?;
+ block.store(context, location, clone_ptr, k1)?;
+
+ let clone_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let data_ptr = if REVERSE {
+ data_ptr
+ } else {
+ let offset = block.append_op_result(arith::extui(
+ extract_len_value,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset =
+ block.append_op_result(arith::muli(offset, elem_stride, location))?;
- let value = entry.arg(0)?;
+ block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?
+ };
+
+ let others_len = block.append_op_result(arith::subi(
+ array_len,
+ extract_len_value,
+ location,
+ ))?;
+ let others_len = block.append_op_result(arith::extui(
+ others_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let others_size =
+ block.append_op_result(arith::muli(others_len, elem_stride, location))?;
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) => {
+ block.append_operation(scf::r#for(
+ k0,
+ others_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ data_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ clone_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value =
+ block.load(context, location, source_ptr, elem_type)?;
+ let values = dup_overrides_meta.invoke_override(
+ context, &block, location, elem_ty, value,
+ )?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, data_ptr, clone_ptr, others_size),
+ }
- let array_start = entry.extract_value(context, location, value, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, value, len_ty, 2)?;
- let is_empty = entry.cmpi(context, CmpiPredicate::Eq, array_start, array_end, location)?;
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(context, &block, location, self_ty, array_value)?;
- let valid_block = helper.append_block(Block::new(&[]));
- let empty_block = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
- context,
- is_empty,
- empty_block,
- valid_block,
- &[],
- &[],
- location,
- ));
+ clone_ptr
+ };
- {
- let k1 = valid_block.const_int(context, location, 1, 32)?;
- let new_end = valid_block.append_op_result(arith::subi(array_end, k1, location))?;
+ block.append_operation(scf::r#yield(&[array_ptr], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let ptr = valid_block.extract_value(context, location, value, ptr_ty, 0)?;
+ block.memcpy(context, location, data_ptr, value_ptr, value_size);
- let elem_size = valid_block.const_int(context, location, elem_layout.size(), 64)?;
- let elem_offset =
- valid_block.extui(new_end, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = valid_block.muli(elem_offset, elem_size, location)?;
- let ptr = valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ block.append_operation(scf::r#yield(&[array_ptr], location));
+ region
+ },
location,
))?;
- let target_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
+ let array_value =
+ valid_block.insert_value(context, location, array_value, new_array_ptr, 0)?;
+
+ let has_realloc = valid_block.append_op_result(
+ ods::llvm::icmp(
+ context,
+ IntegerType::new(context, 1).into(),
+ array_ptr,
+ new_array_ptr,
+ IntegerAttribute::new(IntegerType::new(context, 64).into(), 1).into(),
+ location,
+ )
+ .into(),
)?;
- let target_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context, target_ptr, elem_size, location,
- )?)?;
- assert_nonnull(
- context,
- valid_block,
+ let array_value = valid_block.append_op_result(scf::r#if(
+ has_realloc,
+ &[array_value.r#type()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let k0 = block.const_int_from_type(context, location, 0, len_ty)?;
+ let array_len =
+ block.append_op_result(arith::subi(array_len, extract_len_value, location))?;
+
+ let array_value = block.insert_value(context, location, array_value, k0, 1)?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 2)?;
+ let array_value =
+ block.insert_value(context, location, array_value, array_len, 3)?;
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let array_value = if REVERSE {
+ let array_end = block.append_op_result(arith::subi(
+ array_end,
+ extract_len_value,
+ location,
+ ))?;
+ block.insert_value(context, location, array_value, array_end, 2)?
+ } else {
+ let array_start = block.append_op_result(arith::addi(
+ array_start,
+ extract_len_value,
+ location,
+ ))?;
+ block.insert_value(context, location, array_value, array_start, 1)?
+ };
+
+ block.append_operation(scf::r#yield(&[array_value], location));
+ region
+ },
location,
- target_ptr,
- "realloc returned nullptr",
- )?;
+ ))?;
+
+ branch_values.push(array_value);
+ branch_values.push(value_ptr);
- valid_block.memcpy(context, location, ptr, target_ptr, elem_size);
+ valid_block.append_operation(helper.br(0, &branch_values, location));
+ }
- let value = valid_block.insert_value(context, location, value, new_end, 2)?;
+ {
+ if CONSUME {
+ let self_ty = match info {
+ PopInfo::Single(info) => &info.signature.param_signatures[0].ty,
+ PopInfo::Multi(info) => &info.signature.param_signatures[1].ty,
+ };
+
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(context, error_block, location, self_ty, array_value)?;
+ } else {
+ branch_values.push(array_value);
+ }
- valid_block.append_operation(helper.br(0, &[value, target_ptr], location));
+ error_block.append_operation(helper.br(1, &branch_values, location));
}
- empty_block.append_operation(helper.br(1, &[value], location));
Ok(())
}
-pub fn build_snapshot_multi_pop_front<'ctx, 'this>(
+/// Generate MLIR operations for the `array_get` libfunc.
+pub fn build_get<'ctx, 'this>(
context: &'ctx Context,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
- info: &ConcreteMultiPopLibfunc,
+ info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = entry.arg(0)?;
-
- // Get type information
+ let ptr_ty = llvm::r#type::pointer(context, 0);
+ let len_ty = IntegerType::new(context, 32).into();
- let array_ty = registry.build_type(
+ // Build the type so that the drop impl invocation works properly.
+ registry.build_type(
context,
helper,
registry,
metadata,
- &info.param_signatures()[1].ty,
+ &info.signature.param_signatures[1].ty,
)?;
- let popped_cty = registry.get_type(&info.popped_ty)?;
- let popped_size = popped_cty.layout(registry)?.size();
- let popped_size_value = entry.const_int(context, location, popped_size, 64)?;
-
- let popped_ctys = popped_cty
- .fields()
- .expect("popped type should be a tuple (ergo, has fields)");
- let popped_len = popped_ctys.len();
-
- let array_ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let array_start_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_end_ty = crate::ffi::get_struct_field_type_at(&array_ty, 2);
+ let range_check =
+ super::increment_builtin_counter(context, entry, location, entry.argument(0)?.into())?;
- // Get array information
+ let array_start =
+ entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 2)?;
- let array = entry.arg(1)?;
- let array_ptr = entry.extract_value(context, location, array, array_ptr_ty, 0)?;
- let array_start = entry.extract_value(context, location, array, array_start_ty, 1)?;
- let array_end = entry.extract_value(context, location, array, array_end_ty, 2)?;
-
- // Check if operation is valid:
- // if array.end - array.start < popped_len {
- // return
- // }
-
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let popped_len_value = entry.const_int(context, location, popped_len, 32)?;
- let is_valid = entry.cmpi(
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
+ let is_valid = entry.append_op_result(arith::cmpi(
context,
- CmpiPredicate::Uge,
+ CmpiPredicate::Ult,
+ entry.argument(2)?.into(),
array_len,
- popped_len_value,
location,
- )?;
+ ))?;
let valid_block = helper.append_block(Block::new(&[]));
- let invalid_block = helper.append_block(Block::new(&[]));
-
+ let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
is_valid,
valid_block,
- invalid_block,
+ error_block,
&[],
&[],
location,
));
{
- // Get pointer to first element to pop
-
- let popped_ptr = {
- let single_popped_ty =
- registry.build_type(context, helper, registry, metadata, &popped_ctys[0])?;
-
- valid_block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- array_ptr,
- &[array_start],
- single_popped_ty,
- llvm::r#type::pointer(context, 0),
- location,
- ))?
- };
-
- // Allocate memory for return array
-
- let return_ptr = {
- let null_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
- )?;
- valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- null_ptr,
- popped_size_value,
- location,
- )?)?
- };
-
- valid_block.memcpy(context, location, popped_ptr, return_ptr, popped_size_value);
-
- // Update array start (removing popped elements)
-
- let array = {
- let new_array_start = valid_block.addi(array_start, popped_len_value, location)?;
-
- valid_block.insert_value(context, location, array, new_array_start, 1)?
- };
-
- valid_block.append_operation(helper.br(0, &[range_check, array, return_ptr], location));
- }
-
- invalid_block.append_operation(helper.br(1, &[range_check, array], location));
-
- Ok(())
-}
-
-pub fn build_snapshot_multi_pop_back<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &ConcreteMultiPopLibfunc,
-) -> Result<()> {
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let range_check = entry.arg(0)?;
-
- // Get type information
-
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.param_signatures()[1].ty,
- )?;
-
- let popped_cty = registry.get_type(&info.popped_ty)?;
- let popped_size = popped_cty.layout(registry)?.size();
- let popped_size_value = entry.const_int(context, location, popped_size, 64)?;
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let popped_ctys = popped_cty
- .fields()
- .expect("popped type should be a tuple (ergo, has fields)");
- let popped_len = popped_ctys.len();
+ let value_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let value_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ value_ptr,
+ elem_stride,
+ location,
+ )?)?;
- let array_ptr_ty = crate::ffi::get_struct_field_type_at(&array_ty, 0);
- let array_start_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
- let array_end_ty = crate::ffi::get_struct_field_type_at(&array_ty, 2);
+ let array_ptr =
+ valid_block.extract_value(context, location, entry.argument(1)?.into(), ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- // Get array information
+ let offset = valid_block.append_op_result(arith::addi(
+ array_start,
+ entry.argument(2)?.into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::extui(
+ offset,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
- let array = entry.arg(1)?;
- let array_ptr = entry.extract_value(context, location, array, array_ptr_ty, 0)?;
- let array_start = entry.extract_value(context, location, array, array_start_ty, 1)?;
- let array_end = entry.extract_value(context, location, array, array_end_ty, 2)?;
+ let source_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- // Check if operation is valid:
- // if array.end - array.start < popped_len {
- // return
- // }
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, value_ptr, values.1)?;
+ }
+ _ => block.memcpy(context, location, source_ptr, value_ptr, elem_stride),
+ }
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let popped_len_value = entry.const_int(context, location, popped_len, 32)?;
- let is_valid = entry.cmpi(
- context,
- CmpiPredicate::Uge,
- array_len,
- popped_len_value,
- location,
- )?;
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.memcpy(context, location, source_ptr, value_ptr, elem_stride);
+
+ match metadata.get::<DropOverridesMeta>() {
+ Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
+ let drop_loop = |o0, o1| {
+ block.append_operation(scf::r#for(
+ o0,
+ o1,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let value_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(block.argument(0)?.into())],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let value =
+ block.load(context, location, value_ptr, elem_ty)?;
+ drop_overrides_meta.invoke_override(
+ context, &block, location, &info.ty, value,
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let valid_block = helper.append_block(Block::new(&[]));
- let invalid_block = helper.append_block(Block::new(&[]));
+ Result::Ok(())
+ };
- entry.append_operation(cf::cond_br(
- context,
- is_valid,
- valid_block,
- invalid_block,
- &[],
- &[],
- location,
- ));
+ let o0 = block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::addi(
+ array_start,
+ entry.argument(2)?.into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::extui(
+ o1,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o0 = block.append_op_result(arith::muli(o0, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
- {
- // Get pointer to first element to pop
+ let o0 = block.append_op_result(arith::addi(o1, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+ }
+ _ => {}
+ }
- let popped_ptr = {
- let single_popped_ty =
- registry.build_type(context, helper, registry, metadata, &popped_ctys[0])?;
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
- let popped_start =
- valid_block.append_op_result(arith::subi(array_end, popped_len_value, location))?;
+ valid_block.append_operation(helper.br(0, &[range_check, value_ptr], location));
+ }
- valid_block.append_op_result(llvm::get_element_ptr_dynamic(
+ {
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
context,
- array_ptr,
- &[popped_start],
- single_popped_ty,
- llvm::r#type::pointer(context, 0),
+ error_block,
location,
- ))?
- };
-
- // Allocate memory for return array
-
- let return_ptr = {
- let null_ptr = valid_block.append_op_result(
- ods::llvm::mlir_zero(context, pointer(context, 0), location).into(),
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
)?;
- valid_block.append_op_result(ReallocBindingsMeta::realloc(
- context,
- null_ptr,
- popped_size_value,
- location,
- )?)?
- };
-
- valid_block.memcpy(context, location, popped_ptr, return_ptr, popped_size_value);
- // Update array end (removing popped elements)
-
- let array = {
- let new_array_end =
- valid_block.append_op_result(arith::subi(array_end, popped_len_value, location))?;
-
- valid_block.insert_value(context, location, array, new_array_end, 2)?
- };
-
- valid_block.append_operation(helper.br(0, &[range_check, array, return_ptr], location));
+ error_block.append_operation(helper.br(1, &[range_check], location));
}
- invalid_block.append_operation(helper.br(1, &[range_check, array], location));
-
Ok(())
}
@@ -3613,39 +4498,61 @@
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- let range_check = super::increment_builtin_counter(context, entry, location, entry.arg(0)?)?;
+ // Signature:
+ // Params: RangeCheck, Snapshot<Array<felt252>>, u32, u32
+ // Branches:
+ // 0: RangeCheck, Snapshot<Array<felt252>>
+ // 1: RangeCheck
+ let ptr_ty = llvm::r#type::pointer(context, 0);
let len_ty = IntegerType::new(context, 32).into();
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_layout = elem_ty.layout(registry)?;
+ let self_ty = registry.build_type(
+ context,
+ helper,
+ registry,
+ metadata,
+ &info.signature.param_signatures[1].ty,
+ )?;
+
+ let range_check =
+ super::increment_builtin_counter(context, entry, location, entry.argument(0)?.into())?;
- let array_start = entry.extract_value(context, location, entry.arg(1)?, len_ty, 1)?;
- let array_end = entry.extract_value(context, location, entry.arg(1)?, len_ty, 2)?;
+ let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
+ let k1 = entry.const_int_from_type(context, location, 1, len_ty)?;
+
+ let array_start =
+ entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(1)?.into(), len_ty, 2)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let slice_start = entry.arg(2)?;
- let slice_len = entry.arg(3)?;
- let slice_end = entry.addi(slice_start, slice_len, location)?;
+ let slice_start = entry.argument(2)?.into();
+ let slice_len = entry.argument(3)?.into();
+ let slice_end = entry.append_op_result(arith::addi(slice_start, slice_len, location))?;
- let slice_start = entry.addi(array_start, slice_start, location)?;
- let slice_end = entry.addi(array_start, slice_end, location)?;
- let lhs_bound = entry.cmpi(
+ let slice_lhs_bound = entry.append_op_result(arith::cmpi(
context,
- CmpiPredicate::Uge,
+ CmpiPredicate::Ule,
slice_start,
- array_start,
+ array_len,
location,
- )?;
- let rhs_bound = entry.cmpi(context, CmpiPredicate::Ule, slice_end, array_end, location)?;
-
- let is_valid = entry.append_op_result(arith::andi(lhs_bound, rhs_bound, location))?;
+ ))?;
+ let slice_rhs_bound = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ule,
+ slice_end,
+ array_len,
+ location,
+ ))?;
+ let slice_bounds =
+ entry.append_op_result(arith::andi(slice_lhs_bound, slice_rhs_bound, location))?;
- let slice_block = helper.append_block(Block::new(&[]));
+ let valid_block = helper.append_block(Block::new(&[]));
let error_block = helper.append_block(Block::new(&[]));
entry.append_operation(cf::cond_br(
context,
- is_valid,
- slice_block,
+ slice_bounds,
+ valid_block,
error_block,
&[],
&[],
@@ -3653,89 +4560,229 @@
));
{
- let elem_ty = elem_ty.build(context, helper, registry, metadata, &info.ty)?;
+ let (elem_ty, elem_layout) =
+ registry.build_type_with_layout(context, helper, registry, metadata, &info.ty)?;
+ let elem_stride =
+ valid_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let value = entry.arg(1)?;
- let value = slice_block.insert_value(context, location, value, slice_start, 1)?;
- let value = slice_block.insert_value(context, location, value, slice_end, 2)?;
+ let slice_size = valid_block.append_op_result(arith::extui(
+ slice_len,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let slice_size =
+ valid_block.append_op_result(arith::muli(elem_stride, slice_size, location))?;
+ let slice_size_with_offset = valid_block.append_op_result(arith::addi(
+ slice_size,
+ valid_block.const_int(context, location, calc_refcount_offset(elem_layout), 64)?,
+ location,
+ ))?;
- let elem_stride =
- slice_block.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let prepare = |value| {
- let value = slice_block.extui(value, IntegerType::new(context, 64).into(), location)?;
- slice_block.muli(value, elem_stride, location)
- };
+ let slice_ptr = valid_block.append_op_result(llvm::zero(ptr_ty, location))?;
+ let slice_ptr = valid_block.append_op_result(ReallocBindingsMeta::realloc(
+ context,
+ slice_ptr,
+ slice_size_with_offset,
+ location,
+ )?)?;
+ valid_block.store(context, location, slice_ptr, k1)?;
- let ptr = slice_block.extract_value(
+ let slice_ptr = valid_block.gep(
context,
location,
- entry.arg(1)?,
- llvm::r#type::pointer(context, 0),
- 0,
+ slice_ptr,
+ &[GepIndex::Const(calc_refcount_offset(elem_layout) as i32)],
+ IntegerType::new(context, 8).into(),
)?;
- let make_region = |drop_overrides_meta: &DropOverridesMeta| {
- let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
- let value_ptr = block.append_op_result(llvm::get_element_ptr_dynamic(
- context,
- ptr,
- &[block.arg(0)?],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
- location,
- ))?;
+ let array_ptr =
+ valid_block.extract_value(context, location, entry.argument(1)?.into(), ptr_ty, 0)?;
+ let is_shared = is_shared(context, valid_block, location, array_ptr, elem_layout)?;
- let value = block.load(context, location, value_ptr, elem_ty)?;
- drop_overrides_meta.invoke_override(context, &block, location, &info.ty, value)?;
+ let offset =
+ valid_block.append_op_result(arith::addi(array_start, slice_start, location))?;
+ let offset = valid_block.append_op_result(arith::extui(
+ offset,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let offset = valid_block.append_op_result(arith::muli(offset, elem_stride, location))?;
- block.append_operation(scf::r#yield(&[], location));
- Result::Ok(region)
- };
+ let source_ptr = valid_block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
- let array_start = prepare(array_start)?;
- let array_end = prepare(array_end)?;
- let slice_start = prepare(slice_start)?;
- let slice_end = prepare(slice_end)?;
-
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
- slice_block.append_operation(scf::r#for(
- array_start,
- slice_start,
- elem_stride,
- make_region(drop_overrides_meta)?,
- location,
- ));
- slice_block.append_operation(scf::r#for(
- slice_end,
- array_end,
- elem_stride,
- make_region(drop_overrides_meta)?,
- location,
- ));
- }
- _ => {}
- };
+ valid_block.append_operation(scf::r#if(
+ is_shared,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DupOverridesMeta>() {
+ Some(dup_overrides_meta) if dup_overrides_meta.is_overriden(&info.ty) => {
+ let k0 = valid_block.const_int(context, location, 0, 64)?;
+ valid_block.append_operation(scf::r#for(
+ k0,
+ slice_size,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let offset = block.argument(0)?.into();
+ let source_ptr = block.gep(
+ context,
+ location,
+ source_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let target_ptr = block.gep(
+ context,
+ location,
+ slice_ptr,
+ &[GepIndex::Value(offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+
+ let value = block.load(context, location, source_ptr, elem_ty)?;
+ let values = dup_overrides_meta
+ .invoke_override(context, &block, location, &info.ty, value)?;
+ block.store(context, location, source_ptr, values.0)?;
+ block.store(context, location, target_ptr, values.1)?;
- slice_block.append_operation(helper.br(0, &[range_check, value], location));
- }
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => block.memcpy(context, location, source_ptr, slice_ptr, slice_size),
+ }
- {
- registry.build_type(
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
+ context,
+ &block,
+ location,
+ &info.signature.param_signatures[1].ty,
+ entry.argument(1)?.into(),
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.memcpy(context, location, source_ptr, slice_ptr, slice_size);
+
+ match metadata.get::<DropOverridesMeta>() {
+ Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
+ let drop_loop = |o0, o1| {
+ block.append_operation(scf::r#for(
+ o0,
+ o1,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let value_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(block.argument(0)?.into())],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let value =
+ block.load(context, location, value_ptr, elem_ty)?;
+ drop_overrides_meta.invoke_override(
+ context, &block, location, &info.ty, value,
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+
+ Result::Ok(())
+ };
+
+ let o0 = block.append_op_result(arith::extui(
+ array_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::addi(
+ array_start,
+ slice_start,
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::extui(
+ o1,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o0 = block.append_op_result(arith::muli(o0, elem_stride, location))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+
+ let o0 = block.append_op_result(arith::addi(o1, slice_size, location))?;
+ let o1 = block.append_op_result(arith::extui(
+ array_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let o1 = block.append_op_result(arith::muli(o1, elem_stride, location))?;
+ drop_loop(o0, o1)?;
+ }
+ _ => {}
+ }
+
+ let array_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
+ IntegerType::new(context, 8).into(),
+ )?;
+ block.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+
+ let slice_value = valid_block.append_op_result(llvm::undef(self_ty, location))?;
+ let slice_value = valid_block.insert_values(
context,
- helper,
- registry,
- metadata,
- &info.signature.param_signatures[1].ty,
+ location,
+ slice_value,
+ &[slice_ptr, k0, slice_len, slice_len],
)?;
- // The metadata get will never fail because an array always has a drop implementation,
- // which at this point is always inserted thanks to the `build_type()` just above.
- metadata
+ valid_block.append_operation(helper.br(0, &[range_check, slice_value], location));
+ }
+
+ {
+ metadata
.get::<DropOverridesMeta>()
.ok_or(Error::MissingMetadata)?
.invoke_override(
@@ -3743,7 +4790,7 @@
error_block,
location,
&info.signature.param_signatures[1].ty,
- entry.arg(1)?,
+ entry.argument(1)?.into(),
)?;
error_block.append_operation(helper.br(1, &[range_check], location));
@@ -3752,309 +4799,137 @@
Ok(())
}
-/// Generate MLIR operations for the `span_from_tuple` libfunc.
-pub fn build_span_from_tuple<'ctx, 'this>(
+/// Generate MLIR operations for the `array_len` libfunc.
+pub fn build_len<'ctx, 'this>(
context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ _registry: &ProgramRegistry<CoreType, CoreLibfunc>,
entry: &'this Block<'ctx>,
location: Location<'ctx>,
helper: &LibfuncHelper<'ctx, 'this>,
metadata: &mut MetadataStorage,
info: &SignatureAndTypeConcreteLibfunc,
) -> Result<()> {
- // tuple to array span (t,t,t) -> &[t,t,t]
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let struct_type_info = registry.get_type(&info.ty)?;
-
- let struct_ty = registry.build_type(context, helper, registry, metadata, &info.ty)?;
-
- let container: Value = {
- // load box
- entry.load(context, location, entry.arg(0)?, struct_ty)?
- };
- // TODO: Maybe reuse the pointer?
- entry.append_operation(ReallocBindingsMeta::free(context, entry.arg(0)?, location)?);
-
- let fields = struct_type_info.fields().expect("should have fields");
- let (field_ty, field_layout) =
- registry.build_type_with_layout(context, helper, registry, metadata, &fields[0])?;
- let field_stride = field_layout.pad_to_align().size();
-
- let array_ty = registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.branch_signatures()[0].vars[0].ty,
- )?;
- let len_ty = crate::ffi::get_struct_field_type_at(&array_ty, 1);
-
- let array_len_value = entry.const_int_from_type(context, location, fields.len(), len_ty)?;
-
- let array_container = entry.append_op_result(llvm::undef(array_ty, location))?;
-
- let k0 = entry.const_int_from_type(context, location, 0, len_ty)?;
-
- let array_container = entry.insert_value(context, location, array_container, k0, 1)?;
- let array_container =
- entry.insert_value(context, location, array_container, array_len_value, 2)?;
- let array_container =
- entry.insert_value(context, location, array_container, array_len_value, 3)?;
-
- let ptr = entry
- .append_op_result(ods::llvm::mlir_zero(context, pointer(context, 0), location).into())?;
-
- let field_size: Value = entry.const_int(context, location, field_stride, 64)?;
- let array_len_value_i64 = entry.extui(array_len_value, field_size.r#type(), location)?;
- let total_size = entry.muli(field_size, array_len_value_i64, location)?;
+ let len_ty = IntegerType::new(context, 32).into();
- let ptr = entry.append_op_result(ReallocBindingsMeta::realloc(
- context, ptr, total_size, location,
- )?)?;
+ let array_start =
+ entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 1)?;
+ let array_end = entry.extract_value(context, location, entry.argument(0)?.into(), len_ty, 2)?;
- for (i, _) in fields.iter().enumerate() {
- let value: Value = entry.extract_value(context, location, container, field_ty, i)?;
+ let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let target_ptr = entry.append_op_result(llvm::get_element_ptr(
+ metadata
+ .get::<DropOverridesMeta>()
+ .unwrap()
+ .invoke_override(
context,
- ptr,
- DenseI32ArrayAttribute::new(context, &[i as i32]),
- field_ty,
- pointer(context, 0),
+ entry,
location,
- ))?;
-
- entry.store(context, location, target_ptr, value)?;
- }
-
- let array_container = entry.insert_value(context, location, array_container, ptr, 0)?;
-
- entry.append_operation(helper.br(0, &[array_container], location));
+ &info.signature.param_signatures[0].ty,
+ entry.argument(0)?.into(),
+ )?;
+ entry.append_operation(helper.br(0, &[array_len], location));
Ok(())
}
-fn assert_nonnull<'ctx, 'this>(
+fn calc_refcount_offset(layout: Layout) -> usize {
+ get_integer_layout(32)
+ .align_to(layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size()
+}
+
+fn is_shared<'ctx, 'this>(
context: &'ctx Context,
- entry: &'this Block<'ctx>,
+ block: &'this Block<'ctx>,
location: Location<'ctx>,
- ptr: Value<'ctx, 'this>,
- msg: &str,
-) -> Result<()> {
- let null_ptr =
- entry.append_op_result(ods::llvm::mlir_zero(context, ptr.r#type(), location).into())?;
-
- let ptr_is_not_null = entry.append_op_result(
- ods::llvm::icmp(
+ array_ptr: Value<'ctx, 'this>,
+ elem_layout: Layout,
+) -> Result<Value<'ctx, 'this>> {
+ let k0 = block.const_int(context, location, 0, 64)?;
+ let ptr_as_int = block.append_op_result(
+ ods::llvm::ptrtoint(
context,
- IntegerType::new(context, 1).into(),
- ptr,
- null_ptr,
- IntegerAttribute::new(IntegerType::new(context, 64).into(), 1).into(),
+ IntegerType::new(context, 64).into(),
+ array_ptr,
location,
)
.into(),
)?;
-
- entry.append_operation(cf::assert(context, ptr_is_not_null, msg, location));
- Ok(())
-}
-
-pub fn build_tuple_from_span<'ctx, 'this>(
- context: &'ctx Context,
- registry: &ProgramRegistry<CoreType, CoreLibfunc>,
- entry: &'this Block<'ctx>,
- location: Location<'ctx>,
- helper: &LibfuncHelper<'ctx, 'this>,
- metadata: &mut MetadataStorage,
- info: &SignatureAndTypeConcreteLibfunc,
-) -> Result<()> {
- // Tasks:
- // - Check if sizes match.
- // - If they do not match, jump to branch [1].
- // - If they do match:
- // - If start == 0 && capacity == len -> reuse the pointer
- // - Otherwise, realloc + memcpy + free.
-
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, helper));
- }
-
- let array_ty = registry.get_type(&info.signature.param_signatures[0].ty)?;
- let (elem_id, elem_ty) = match array_ty {
- CoreTypeConcrete::Array(info) => (&info.ty, registry.get_type(&info.ty)?),
- CoreTypeConcrete::Snapshot(info) => match registry.get_type(&info.ty)? {
- CoreTypeConcrete::Array(info) => (&info.ty, registry.get_type(&info.ty)?),
- _ => native_panic!(
- "matched an unexpected CoreTypeConcrete that is not a Array or Snapshot"
- ),
- },
- _ => {
- native_panic!("matched an unexpected CoreTypeConcrete that is not a Array or Snapshot")
- }
- };
- let elem_layout = elem_ty.layout(registry)?;
-
- let array_start = entry.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 1,
- )?;
- let array_end = entry.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 2,
- )?;
-
- let array_len = entry.append_op_result(arith::subi(array_end, array_start, location))?;
- let (tuple_len, tuple_len_val) = {
- let fields = registry
- .get_type(&info.ty)?
- .fields()
- .to_native_assert_error("missing field")?;
-
- native_assert!(
- fields.iter().all(|f| f.id == elem_id.id),
- "all the elements of the array must have the same type"
- );
-
- (
- entry.const_int(context, location, fields.len(), 32)?,
- fields.len(),
- )
- };
-
- let len_matches = entry.cmpi(context, CmpiPredicate::Eq, array_len, tuple_len, location)?;
-
- let block_ok = helper.append_block(Block::new(&[]));
- let block_err = helper.append_block(Block::new(&[]));
- entry.append_operation(cf::cond_br(
+ let ptr_is_null = block.append_op_result(arith::cmpi(
context,
- len_matches,
- block_ok,
- block_err,
- &[],
- &[],
+ CmpiPredicate::Eq,
+ ptr_as_int,
+ k0,
location,
- ));
-
- {
- let k0 = block_ok.const_int(context, location, 0, 32)?;
- let starts_at_zero =
- block_ok.cmpi(context, CmpiPredicate::Eq, array_start, k0, location)?;
-
- let array_cap = block_ok.extract_value(
- context,
- location,
- entry.arg(0)?,
- IntegerType::new(context, 32).into(),
- 3,
- )?;
- let capacity_matches =
- block_ok.cmpi(context, CmpiPredicate::Eq, array_cap, tuple_len, location)?;
+ ))?;
- let array_ptr = block_ok.extract_value(
- context,
- location,
- entry.arg(0)?,
- llvm::r#type::pointer(context, 0),
- 0,
- )?;
- let should_forward_pointer =
- block_ok.append_op_result(arith::andi(starts_at_zero, capacity_matches, location))?;
+ let is_shared = block.append_op_result(scf::r#if(
+ ptr_is_null,
+ &[IntegerType::new(context, 1).into()],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let block_clone = helper.append_block(Block::new(&[]));
- let block_forward = helper.append_block(Block::new(&[]));
- block_ok.append_operation(cf::cond_br(
- context,
- should_forward_pointer,
- block_forward,
- block_clone,
- &[],
- &[],
- location,
- ));
+ let k0 = block.const_int(context, location, 0, 1)?;
+ block.append_operation(scf::r#yield(&[k0], location));
+ region
+ },
{
- let elem_stride =
- block_clone.const_int(context, location, elem_layout.pad_to_align().size(), 64)?;
- let tuple_len =
- block_clone.extui(tuple_len, IntegerType::new(context, 64).into(), location)?;
- let tuple_len = block_clone.muli(tuple_len, elem_stride, location)?;
-
- let box_ptr = block_clone
- .append_op_result(llvm::zero(llvm::r#type::pointer(context, 0), location))?;
- let box_ptr = block_clone.append_op_result(ReallocBindingsMeta::realloc(
- context, box_ptr, tuple_len, location,
- )?)?;
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let elem_offset =
- block_clone.extui(array_start, IntegerType::new(context, 64).into(), location)?;
- let elem_offset = block_clone.muli(elem_offset, elem_stride, location)?;
- let elem_ptr = block_clone.append_op_result(llvm::get_element_ptr_dynamic(
+ let array_ptr = block.gep(
context,
+ location,
array_ptr,
- &[elem_offset],
+ &[GepIndex::Const(-(calc_refcount_offset(elem_layout) as i32))],
IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ )?;
+ let ref_count = block.load(
+ context,
location,
- ))?;
+ array_ptr,
+ IntegerType::new(context, 32).into(),
+ )?;
- block_clone.append_operation(
- ods::llvm::intr_memcpy_inline(
+ #[cfg(debug_assertions)]
+ {
+ let k0 = block.const_int(context, location, 0, 32)?;
+ let is_nonzero = block.append_op_result(arith::cmpi(
context,
- box_ptr,
- elem_ptr,
- IntegerAttribute::new(
- IntegerType::new(context, 64).into(),
- (tuple_len_val * elem_layout.pad_to_align().size()) as i64,
- ),
- IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
+ CmpiPredicate::Ne,
+ ref_count,
+ k0,
location,
- )
- .into(),
- );
-
- block_clone.append_operation(ReallocBindingsMeta::free(context, array_ptr, location)?);
- block_clone.append_operation(helper.br(0, &[box_ptr], location));
- }
+ ))?;
- block_forward.append_operation(helper.br(0, &[array_ptr], location));
- }
-
- {
- registry.build_type(
- context,
- helper,
- registry,
- metadata,
- &info.signature.param_signatures[0].ty,
- )?;
+ block.append_operation(cf::assert(
+ context,
+ is_nonzero,
+ "ref_count must not be zero",
+ location,
+ ));
+ }
- // The metadata get will never fail because an array always has a drop implementation,
- // which at this point is always inserted thanks to the `build_type()` just above.
- metadata
- .get::<DropOverridesMeta>()
- .ok_or(Error::MissingMetadata)?
- .invoke_override(
+ let k1 = block.const_int(context, location, 1, 32)?;
+ let is_shared = block.append_op_result(arith::cmpi(
context,
- block_err,
+ CmpiPredicate::Ne,
+ ref_count,
+ k1,
location,
- &info.signature.param_signatures[0].ty,
- entry.arg(0)?,
- )?;
+ ))?;
- block_err.append_operation(helper.br(1, &[], location));
- }
+ block.append_operation(scf::r#yield(&[is_shared], location));
+ region
+ },
+ location,
+ ))?;
- Ok(())
+ Ok(is_shared)
}
#[cfg(test)]
@@ -4365,7 +5240,6 @@
//data.append(5_u32);
*slice.get(0).unwrap().unbox()
}
-
);
let result = run_program(&program, "run_test", &[]).return_value;
diff --git a/src/cairo_native/metadata/debug_utils.rs.html b/src/cairo_native/metadata/debug_utils.rs.html
index ca4f3df8a..343e1c931 100644
--- a/src/cairo_native/metadata/debug_utils.rs.html
+++ b/src/cairo_native/metadata/debug_utils.rs.html
@@ -1563,7 +1563,7 @@
unsafe extern "C" fn dump_mem_impl(ptr: *const (), len: u64) {
println!("[DEBUG] Memory dump at {ptr:?}:");
for chunk in (0..len).step_by(8) {
- print!(" {ptr:?}:");
+ print!(" {:?}:", ptr.byte_add(chunk as usize));
for offset in chunk..chunk + 8 {
print!(" {:02x}", ptr.byte_add(offset as usize).cast::<u8>().read());
}
diff --git a/src/cairo_native/starknet.rs.html b/src/cairo_native/starknet.rs.html
index 4725ec488..b936c8a27 100644
--- a/src/cairo_native/starknet.rs.html
+++ b/src/cairo_native/starknet.rs.html
@@ -1703,6 +1703,33 @@
1703
1704
1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
//! Starknet related code for `cairo_native`
use serde::{Deserialize, Serialize};
@@ -2245,12 +2272,11 @@
// TODO: Move to the correct place or remove if unused.
pub(crate) mod handler {
use super::*;
- use crate::utils::{libc_free, libc_malloc};
+ use crate::utils::{get_integer_layout, libc_free, libc_malloc};
use std::{
alloc::Layout,
- ffi::c_void,
fmt::Debug,
- mem::{size_of, ManuallyDrop, MaybeUninit},
+ mem::{self, size_of, ManuallyDrop, MaybeUninit},
ptr::{null_mut, NonNull},
};
@@ -2614,7 +2640,17 @@
capacity: 0,
},
_ => {
- let ptr = libc_malloc(Layout::array::<E>(data.len()).unwrap().size()) as *mut E;
+ let refcount_offset = get_integer_layout(32)
+ .align_to(mem::align_of::<E>())
+ .unwrap()
+ .pad_to_align()
+ .size();
+ let ptr = libc_malloc(
+ Layout::array::<E>(data.len()).unwrap().size() + refcount_offset,
+ ) as *mut E;
+
+ ptr.cast::<u32>().write(1);
+ let ptr = ptr.byte_add(refcount_offset);
let len: u32 = data.len().try_into().unwrap();
for (i, val) in data.iter().enumerate() {
@@ -2631,6 +2667,24 @@
}
}
+ unsafe fn drop_mlir_array<E>(data: &ArrayAbi<E>) {
+ if data.ptr.is_null() {
+ return;
+ }
+
+ let refcount_offset = get_integer_layout(32)
+ .align_to(mem::align_of::<E>())
+ .unwrap()
+ .pad_to_align()
+ .size();
+
+ let ptr = data.ptr.byte_sub(refcount_offset);
+ match ptr.cast::<u32>().read() {
+ 1 => libc_free(ptr.cast()),
+ n => ptr.cast::<u32>().write(n - 1),
+ }
+ }
+
fn wrap_error<E>(e: &[Felt]) -> SyscallResultAbi<E> {
SyscallResultAbi {
err: ManuallyDrop::new(SyscallResultAbiErr {
@@ -2673,7 +2727,7 @@
let input_vec: Vec<_> = input.into();
unsafe {
- libc_free(input.ptr as *mut c_void);
+ Self::drop_mlir_array(input);
}
let result = ptr
@@ -2860,7 +2914,7 @@
let calldata_vec: Vec<_> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.deploy(
@@ -2920,7 +2974,7 @@
let calldata_vec: Vec<Felt> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.library_call(class_hash, function_selector, &calldata_vec, gas);
@@ -2954,7 +3008,7 @@
let calldata_vec: Vec<Felt> = calldata.into();
unsafe {
- libc_free(calldata.ptr as *mut c_void);
+ Self::drop_mlir_array(calldata);
}
let result = ptr.call_contract(address, entry_point_selector, &calldata_vec, gas);
@@ -3028,13 +3082,13 @@
let keys_vec: Vec<_> = keys.into();
unsafe {
- libc_free(keys.ptr as *mut c_void);
+ Self::drop_mlir_array(keys);
}
let data_vec: Vec<_> = data.into();
unsafe {
- libc_free(data.ptr as *mut c_void);
+ Self::drop_mlir_array(data);
}
let result = ptr.emit_event(&keys_vec, &data_vec, gas);
@@ -3061,7 +3115,7 @@
let payload_vec: Vec<_> = payload.into();
unsafe {
- libc_free(payload.ptr as *mut c_void);
+ Self::drop_mlir_array(payload);
}
let result = ptr.send_message_to_l1(to_address, &payload_vec, gas);
@@ -3096,7 +3150,7 @@
let result = ptr.keccak(input_vec, gas);
unsafe {
- libc_free(input.ptr as *mut c_void);
+ Self::drop_mlir_array(input);
}
*result_ptr = match result {
diff --git a/src/cairo_native/types.rs.html b/src/cairo_native/types.rs.html
index b080dc46b..87b16786e 100644
--- a/src/cairo_native/types.rs.html
+++ b/src/cairo_native/types.rs.html
@@ -1011,16 +1011,6 @@
1011
1012
1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
//! # Compiler type infrastructure
//!
//! Contains type generation stuff (aka. conversion from Sierra to MLIR types).
@@ -1157,9 +1147,6 @@
/// TODO: How is it used?
fn variants(&self) -> Option<&[ConcreteTypeId]>;
- // If the type is a struct, return the field types.
- fn fields(&self) -> Option<&[ConcreteTypeId]>;
-
#[allow(clippy::too_many_arguments)]
fn build_default<'ctx, 'this>(
&self,
@@ -1926,13 +1913,6 @@
}
}
- fn fields(&self) -> Option<&[ConcreteTypeId]> {
- match self {
- Self::Struct(info) => Some(&info.members),
- _ => None,
- }
- }
-
fn build_default<'ctx, 'this>(
&self,
context: &'ctx Context,
diff --git a/src/cairo_native/types/array.rs.html b/src/cairo_native/types/array.rs.html
index 9356c84f6..e8fcc3052 100644
--- a/src/cairo_native/types/array.rs.html
+++ b/src/cairo_native/types/array.rs.html
@@ -394,6 +394,39 @@
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
//! # Array type
//!
//! An array type is a dynamically allocated list of items.
@@ -410,6 +443,11 @@
//! | 1 | `i32` | Array end offset[^2]. |
//! | 2 | `i32` | Allocated capacity[^2]. |
//!
+//! The pointer to the allocation (which is **not the data**) contains:
+//! 1. Reference counter.
+//! 2. Padding.
+//! 3. Array data. Its address is the pointer to the data stored in the type.
+//!
//! [^1]: When capacity is zero, this field is not guaranteed to be valid.
//! [^2]: Those numbers are number of items, **not bytes**.
@@ -420,7 +458,7 @@
drop_overrides::DropOverridesMeta, dup_overrides::DupOverridesMeta,
realloc_bindings::ReallocBindingsMeta, MetadataStorage,
},
- utils::{BlockExt, GepIndex, ProgramRegistryExt},
+ utils::{get_integer_layout, BlockExt, GepIndex, ProgramRegistryExt},
};
use cairo_lang_sierra::{
extensions::{
@@ -432,8 +470,8 @@
use melior::dialect::{arith::CmpiPredicate, func, scf};
use melior::ir::Region;
use melior::{
- dialect::{arith, cf, llvm, ods},
- ir::{attribute::IntegerAttribute, r#type::IntegerType, Block, Location, Module, Type},
+ dialect::{arith, llvm},
+ ir::{r#type::IntegerType, Block, Location, Module, Type},
Context,
};
@@ -486,7 +524,10 @@
))
}
-fn build_dup<'ctx>(
+/// This function clones the array shallowly. That is, it'll increment the reference counter but not
+/// actually clone anything. The deep clone implementation is provided in `src/libfuncs/array.rs` as
+/// part of some libfuncs's implementations.
+fn build_dup<'ctx>(
context: &'ctx Context,
module: &Module<'ctx>,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
@@ -494,167 +535,84 @@
info: &WithSelf<InfoAndTypeConcreteType>,
) -> Result<Region<'ctx>> {
let location = Location::unknown(context);
- if metadata.get::<ReallocBindingsMeta>().is_none() {
- metadata.insert(ReallocBindingsMeta::new(context, module));
- }
-
let value_ty = registry.build_type(context, module, registry, metadata, info.self_ty())?;
- let elem_ty = registry.get_type(&info.ty)?;
- let elem_stride = elem_ty.layout(registry)?.pad_to_align().size();
- let elem_ty = elem_ty.build(context, module, registry, metadata, &info.ty)?;
+
+ let elem_layout = registry.get_type(&info.ty)?.layout(registry)?;
+ let refcount_offset = get_integer_layout(32)
+ .align_to(elem_layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size();
let region = Region::new();
let entry = region.append_block(Block::new(&[(value_ty, location)]));
- let src_value = entry.arg(0)?;
- let value_ptr = entry.extract_value(
- context,
- location,
- src_value,
- llvm::r#type::pointer(context, 0),
- 0,
- )?;
- let value_start = entry.extract_value(
- context,
- location,
- src_value,
- IntegerType::new(context, 32).into(),
- 1,
- )?;
- let value_end = entry.extract_value(
+ let array_cap = entry.extract_value(
context,
location,
- src_value,
+ entry.argument(0)?.into(),
IntegerType::new(context, 32).into(),
- 2,
+ 3,
)?;
-
- let value_len = entry.append_op_result(arith::subi(value_end, value_start, location))?;
-
let k0 = entry.const_int(context, location, 0, 32)?;
- let value_is_empty = entry.cmpi(context, CmpiPredicate::Eq, value_len, k0, location)?;
-
- let null_ptr =
- entry.append_op_result(llvm::zero(llvm::r#type::pointer(context, 0), location))?;
-
- let block_realloc = region.append_block(Block::new(&[]));
- let block_finish =
- region.append_block(Block::new(&[(llvm::r#type::pointer(context, 0), location)]));
- entry.append_operation(cf::cond_br(
+ let is_empty = entry.append_op_result(arith::cmpi(
context,
- value_is_empty,
- &block_finish,
- &block_realloc,
- &[null_ptr],
- &[],
+ CmpiPredicate::Eq,
+ array_cap,
+ k0,
location,
- ));
+ ))?;
- {
- let elem_stride = block_realloc.const_int(context, location, elem_stride, 64)?;
+ entry.append_operation(scf::r#if(
+ is_empty,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- let dst_value_len = {
- let value_len =
- block_realloc.extui(value_len, IntegerType::new(context, 64).into(), location)?;
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
- block_realloc.muli(value_len, elem_stride, location)?
- };
- let dst_value_ptr = {
- block_realloc.append_op_result(ReallocBindingsMeta::realloc(
+ let array_ptr = block.extract_value(
context,
- null_ptr,
- dst_value_len,
location,
- )?)?
- };
-
- let src_value_ptr = {
- let value_offset =
- block_realloc.extui(value_start, IntegerType::new(context, 64).into(), location)?;
+ entry.argument(0)?.into(),
+ llvm::r#type::pointer(context, 0),
+ 0,
+ )?;
- let src_value_offset = block_realloc.muli(value_offset, elem_stride, location)?;
- block_realloc.gep(
+ let refcount_ptr = block.gep(
context,
location,
- value_ptr,
- &[GepIndex::Value(src_value_offset)],
+ array_ptr,
+ &[GepIndex::Const(-(refcount_offset as i32))],
IntegerType::new(context, 8).into(),
- )?
- };
-
- match metadata.get::<DupOverridesMeta>() {
- Some(dup_override_meta) if dup_override_meta.is_overriden(&info.ty) => {
- let k0 = block_realloc.const_int(context, location, 0, 64)?;
- block_realloc.append_operation(scf::r#for(
- k0,
- dst_value_len,
- elem_stride,
- {
- let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
-
- let idx = block.arg(0)?;
-
- let src_value_ptr = block.gep(
- context,
- location,
- src_value_ptr,
- &[GepIndex::Value(idx)],
- IntegerType::new(context, 8).into(),
- )?;
- let dst_value_ptr = block.gep(
- context,
- location,
- dst_value_ptr,
- &[GepIndex::Value(idx)],
- IntegerType::new(context, 8).into(),
- )?;
-
- let value = block.load(context, location, src_value_ptr, elem_ty)?;
- let values = dup_override_meta
- .invoke_override(context, &block, location, &info.ty, value)?;
- block.store(context, location, src_value_ptr, values.0)?;
- block.store(context, location, dst_value_ptr, values.1)?;
-
- block.append_operation(scf::r#yield(&[], location));
- region
- },
- location,
- ));
- }
- _ => {
- block_realloc.append_operation(
- ods::llvm::intr_memcpy(
- context,
- dst_value_ptr,
- src_value_ptr,
- dst_value_len,
- IntegerAttribute::new(IntegerType::new(context, 1).into(), 0),
- location,
- )
- .into(),
- );
- }
- }
-
- block_realloc.append_operation(cf::br(&block_finish, &[dst_value_ptr], location));
- }
+ )?;
+ let ref_count = block.load(
+ context,
+ location,
+ refcount_ptr,
+ IntegerType::new(context, 32).into(),
+ )?;
- {
- let dst_value = block_finish.append_op_result(llvm::undef(value_ty, location))?;
- let dst_value = block_finish.insert_values(
- context,
- location,
- dst_value,
- &[block_finish.arg(0)?, k0, value_len, value_len],
- )?;
+ let k1 = block.const_int(context, location, 1, 32)?;
+ let ref_count = block.append_op_result(arith::addi(ref_count, k1, location))?;
+ block.store(context, location, refcount_ptr, ref_count)?;
- block_finish.append_operation(func::r#return(&[src_value, dst_value], location));
- }
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ entry.append_operation(func::r#return(
+ &[entry.argument(0)?.into(), entry.argument(0)?.into()],
+ location,
+ ));
Ok(region)
}
@@ -671,83 +629,191 @@
}
let value_ty = registry.build_type(context, module, registry, metadata, info.self_ty())?;
+
let elem_ty = registry.get_type(&info.ty)?;
let elem_stride = elem_ty.layout(registry)?.pad_to_align().size();
let elem_ty = elem_ty.build(context, module, registry, metadata, &info.ty)?;
+ let elem_layout = registry.get_type(&info.ty)?.layout(registry)?;
+ let refcount_offset = get_integer_layout(32)
+ .align_to(elem_layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size();
let region = Region::new();
let entry = region.append_block(Block::new(&[(value_ty, location)]));
- let src_value = entry.arg(0)?;
- let value_ptr = entry.extract_value(
+ let array_ptr = entry.extract_value(
context,
location,
- src_value,
+ entry.argument(0)?.into(),
llvm::r#type::pointer(context, 0),
0,
)?;
- match metadata.get::<DropOverridesMeta>() {
- Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
- let value_start = entry.extract_value(
+ let array_cap = entry.extract_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ IntegerType::new(context, 32).into(),
+ 3,
+ )?;
+ let k0 = entry.const_int(context, location, 0, 32)?;
+ let is_empty = entry.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Eq,
+ array_cap,
+ k0,
+ location,
+ ))?;
+
+ entry.append_operation(scf::r#if(
+ is_empty,
+ &[],
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ let refcount_ptr = block.gep(
context,
location,
- src_value,
- IntegerType::new(context, 32).into(),
- 1,
+ array_ptr,
+ &[GepIndex::Const(-(refcount_offset as i32))],
+ IntegerType::new(context, 8).into(),
)?;
- let value_end = entry.extract_value(
+ let ref_count = block.load(
context,
location,
- src_value,
+ refcount_ptr,
IntegerType::new(context, 32).into(),
- 2,
)?;
- let value_start =
- entry.extui(value_start, IntegerType::new(context, 64).into(), location)?;
- let value_end =
- entry.extui(value_end, IntegerType::new(context, 64).into(), location)?;
-
- let elem_stride = entry.const_int(context, location, elem_stride, 64)?;
- let offset_start = entry.muli(value_start, elem_stride, location)?;
- let offset_end = entry.muli(value_end, elem_stride, location)?;
+ let k1 = block.const_int(context, location, 1, 32)?;
+ let is_shared = block.append_op_result(arith::cmpi(
+ context,
+ CmpiPredicate::Ne,
+ ref_count,
+ k1,
+ location,
+ ))?;
- entry.append_operation(scf::r#for(
- offset_start,
- offset_end,
- elem_stride,
+ block.append_operation(scf::r#if(
+ is_shared,
+ &[],
{
let region = Region::new();
- let block = region.append_block(Block::new(&[(
- IntegerType::new(context, 64).into(),
- location,
- )]));
+ let block = region.append_block(Block::new(&[]));
+
+ let ref_count = block.append_op_result(arith::subi(ref_count, k1, location))?;
+ block.store(context, location, refcount_ptr, ref_count)?;
- let elem_offset = block.arg(0)?;
- let elem_ptr = block.append_op_result(llvm::get_element_ptr_dynamic(
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[]));
+
+ match metadata.get::<DropOverridesMeta>() {
+ Some(drop_overrides_meta) if drop_overrides_meta.is_overriden(&info.ty) => {
+ let value_start = block.extract_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ IntegerType::new(context, 32).into(),
+ 1,
+ )?;
+ let value_end = block.extract_value(
+ context,
+ location,
+ entry.argument(0)?.into(),
+ IntegerType::new(context, 32).into(),
+ 2,
+ )?;
+
+ let value_start = block.append_op_result(arith::extui(
+ value_start,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+ let value_end = block.append_op_result(arith::extui(
+ value_end,
+ IntegerType::new(context, 64).into(),
+ location,
+ ))?;
+
+ let elem_stride =
+ block.const_int(context, location, elem_stride, 64)?;
+ let offset_start = block.append_op_result(arith::muli(
+ value_start,
+ elem_stride,
+ location,
+ ))?;
+ let offset_end = block.append_op_result(arith::muli(
+ value_end,
+ elem_stride,
+ location,
+ ))?;
+
+ block.append_operation(scf::r#for(
+ offset_start,
+ offset_end,
+ elem_stride,
+ {
+ let region = Region::new();
+ let block = region.append_block(Block::new(&[(
+ IntegerType::new(context, 64).into(),
+ location,
+ )]));
+
+ let elem_offset = block.argument(0)?.into();
+ let elem_ptr = block.gep(
+ context,
+ location,
+ array_ptr,
+ &[GepIndex::Value(elem_offset)],
+ IntegerType::new(context, 8).into(),
+ )?;
+ let elem_val =
+ block.load(context, location, elem_ptr, elem_ty)?;
+
+ drop_overrides_meta.invoke_override(
+ context, &block, location, &info.ty, elem_val,
+ )?;
+
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+ }
+ _ => {}
+ }
+
+ block.append_operation(ReallocBindingsMeta::free(
context,
- value_ptr,
- &[elem_offset],
- IntegerType::new(context, 8).into(),
- llvm::r#type::pointer(context, 0),
+ refcount_ptr,
location,
- ))?;
- let elem_val = block.load(context, location, elem_ptr, elem_ty)?;
-
- drop_overrides_meta
- .invoke_override(context, &block, location, &info.ty, elem_val)?;
-
+ )?);
block.append_operation(scf::r#yield(&[], location));
region
},
location,
));
- }
- _ => {}
- }
- entry.append_operation(ReallocBindingsMeta::free(context, value_ptr, location)?);
+ block.append_operation(scf::r#yield(&[], location));
+ region
+ },
+ location,
+ ));
+
entry.append_operation(func::r#return(&[], location));
Ok(region)
}
diff --git a/src/cairo_native/values.rs.html b/src/cairo_native/values.rs.html
index 7a638f64f..379686027 100644
--- a/src/cairo_native/values.rs.html
+++ b/src/cairo_native/values.rs.html
@@ -1713,6 +1713,81 @@
1713
1714
1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
+1733
+1734
+1735
+1736
+1737
+1738
+1739
+1740
+1741
+1742
+1743
+1744
+1745
+1746
+1747
+1748
+1749
+1750
+1751
+1752
+1753
+1754
+1755
+1756
+1757
+1758
+1759
+1760
+1761
+1762
+1763
+1764
+1765
+1766
+1767
+1768
+1769
+1770
+1771
+1772
+1773
+1774
+1775
+1776
+1777
+1778
+1779
+1780
+1781
+1782
+1783
+1784
+1785
+1786
+1787
+1788
+1789
+1790
//! # Params and return values de/serialization
//!
//! A Rusty interface to provide parameters to cairo-native entry point calls.
@@ -1956,16 +2031,29 @@
let elem_ty = registry.get_type(&info.ty)?;
let elem_layout = elem_ty.layout(registry)?.pad_to_align();
- let ptr: *mut () = match elem_layout.size() * data.len() {
+ let refcount_offset = get_integer_layout(32)
+ .align_to(elem_layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size();
+ let ptr = match elem_layout.size() * data.len() {
0 => std::ptr::null_mut(),
- len => libc_malloc(len).cast(),
+ len => {
+ let ptr: *mut () = libc_malloc(len + refcount_offset).cast();
+
+ // Write reference count.
+ ptr.cast::<u32>().write(1);
+
+ ptr.byte_add(refcount_offset)
+ }
};
let len: u32 = data
.len()
.try_into()
.map_err(|_| Error::IntegerConversion)?;
- for (idx, elem) in data.iter().enumerate() {
+ // Write the data.
+ for (idx, elem) in data.iter().enumerate() {
let elem = elem.to_ptr(arena, registry, &info.ty)?;
std::ptr::copy_nonoverlapping(
@@ -2276,6 +2364,7 @@
ptr: NonNull<()>,
type_id: &ConcreteTypeId,
registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+ should_drop: bool,
) -> Result<Self, Error> {
let ty = registry.get_type(type_id)?;
@@ -2301,11 +2390,32 @@
.cast::<u32>()
.as_ref();
- // this pointer can be null if the array has a size of 0.
+ // This pointer can be null if the array is empty.
let init_data_ptr = *ptr.cast::<*mut ()>().as_ref();
let data_ptr =
init_data_ptr.byte_add(elem_stride * start_offset_value as usize);
+ let refcount_offset = get_integer_layout(32)
+ .align_to(elem_layout.align())
+ .unwrap()
+ .pad_to_align()
+ .size();
+ let should_drop = if !init_data_ptr.is_null()
+ && init_data_ptr.byte_sub(refcount_offset).cast::<u32>().read() == 1
+ {
+ should_drop
+ } else {
+ if !init_data_ptr.is_null() && should_drop {
+ *init_data_ptr
+ .byte_sub(refcount_offset)
+ .cast::<u32>()
+ .as_mut()
+ .unwrap() -= 1;
+ }
+
+ false
+ };
+
native_assert!(
end_offset_value >= start_offset_value,
"can't have an array with negative length"
@@ -2320,19 +2430,28 @@
"tried to make a non-null ptr out of a null one",
)?;
- array_value.push(Self::from_ptr(cur_elem_ptr, &info.ty, registry)?);
+ array_value.push(Self::from_ptr(
+ cur_elem_ptr,
+ &info.ty,
+ registry,
+ should_drop,
+ )?);
}
- if !init_data_ptr.is_null() {
- libc_free(init_data_ptr.cast());
+ if should_drop && !init_data_ptr.is_null() {
+ libc_free(init_data_ptr.byte_sub(refcount_offset).cast());
}
Self::Array(array_value)
}
CoreTypeConcrete::Box(info) => {
let inner = *ptr.cast::<NonNull<()>>().as_ptr();
- let value = Self::from_ptr(inner, &info.ty, registry)?;
- libc_free(inner.as_ptr().cast());
+ let value = Self::from_ptr(inner, &info.ty, registry, should_drop)?;
+
+ if should_drop {
+ libc_free(inner.as_ptr().cast());
+ }
+
value
}
CoreTypeConcrete::EcPoint(_) => {
@@ -2377,7 +2496,9 @@
CoreTypeConcrete::Sint32(_) => Self::Sint32(*ptr.cast::<i32>().as_ref()),
CoreTypeConcrete::Sint64(_) => Self::Sint64(*ptr.cast::<i64>().as_ref()),
CoreTypeConcrete::Sint128(_) => Self::Sint128(*ptr.cast::<i128>().as_ref()),
- CoreTypeConcrete::NonZero(info) => Self::from_ptr(ptr, &info.ty, registry)?,
+ CoreTypeConcrete::NonZero(info) => {
+ Self::from_ptr(ptr, &info.ty, registry, should_drop)?
+ }
CoreTypeConcrete::Nullable(info) => {
let inner_ptr = *ptr.cast::<*mut ()>().as_ptr();
if inner_ptr.is_null() {
@@ -2387,8 +2508,13 @@
NonNull::new_unchecked(inner_ptr).cast(),
&info.ty,
registry,
+ should_drop,
)?;
- libc_free(inner_ptr.cast());
+
+ if should_drop {
+ libc_free(inner_ptr.cast());
+ }
+
value
}
}
@@ -2430,7 +2556,12 @@
ptr.as_ptr().byte_add(tag_layout.extend(payload_layout)?.1),
)
.to_native_assert_error("tried to make a non-null ptr out of a null one")?;
- let payload = Self::from_ptr(payload_ptr, &info.variants[tag_value], registry)?;
+ let payload = Self::from_ptr(
+ payload_ptr,
+ &info.variants[tag_value],
+ registry,
+ should_drop,
+ )?;
Self::Enum {
tag: tag_value,
@@ -2458,6 +2589,7 @@
)?,
member_ty,
registry,
+ should_drop,
)?);
}
@@ -2468,19 +2600,20 @@
}
CoreTypeConcrete::Felt252Dict(info)
| CoreTypeConcrete::SquashedFelt252Dict(info) => {
- let FeltDict { inner, .. } = *Box::from_raw(
- ptr.cast::<NonNull<()>>()
- .as_ref()
- .cast::<FeltDict>()
- .as_ptr(),
- );
+ let inner = &ptr
+ .cast::<NonNull<()>>()
+ .as_ref()
+ .cast::<FeltDict>()
+ .as_ref()
+ .inner;
let mut output_map = HashMap::with_capacity(inner.len());
- for (mut key, val_ptr) in inner.into_iter() {
+ for (&key, &val_ptr) in inner.iter() {
if val_ptr.is_null() {
continue;
}
+ let mut key = key;
key[31] &= 0x0F; // Filter out first 4 bits (they're outside an i252).
let key = Felt::from_bytes_le(&key);
@@ -2494,9 +2627,22 @@
.cast(),
&info.ty,
registry,
+ should_drop,
)?,
);
- libc_free(val_ptr);
+
+ if should_drop {
+ libc_free(val_ptr);
+ }
+ }
+
+ if should_drop {
+ drop(Box::from_raw(
+ ptr.cast::<NonNull<()>>()
+ .as_ref()
+ .cast::<FeltDict>()
+ .as_ptr(),
+ ));
}
Self::Felt252Dict {
@@ -2546,8 +2692,10 @@
native_panic!("todo: implement Sha256StateHandle from_ptr")
}
},
- CoreTypeConcrete::Span(_) => native_panic!("todo: implement span from_ptr"),
- CoreTypeConcrete::Snapshot(info) => Self::from_ptr(ptr, &info.ty, registry)?,
+ CoreTypeConcrete::Span(_) => native_panic!("implement span from_ptr"),
+ CoreTypeConcrete::Snapshot(info) => {
+ Self::from_ptr(ptr, &info.ty, registry, should_drop)?
+ }
CoreTypeConcrete::Bytes31(_) => {
let data = *ptr.cast::<[u8; 31]>().as_ref();
Self::Bytes31(data)
@@ -2584,6 +2732,7 @@
)?,
&info.ty,
registry,
+ should_drop,
)?;
let y = Self::from_ptr(
@@ -2594,6 +2743,7 @@
.to_native_assert_error("tried to make a non-null ptr out of a null one")?,
&info.ty,
registry,
+ should_drop,
)?;
Self::IntRange {