diff --git a/cli/test-utils/src/util.rs b/cli/test-utils/src/util.rs index 9c2ffa62dd7a..fa68b61ba959 100644 --- a/cli/test-utils/src/util.rs +++ b/cli/test-utils/src/util.rs @@ -163,7 +163,7 @@ impl TestProject { /// Adds DSTest as a source under "test.sol" pub fn insert_ds_test(&self) -> PathBuf { - let s = include_str!("../../../forge/testdata/DsTest.sol"); + let s = include_str!("../../../testdata/lib/ds-test/src/test.sol"); self.inner().add_source("test.sol", s).unwrap() } diff --git a/cli/testdata/run_test.sol b/cli/testdata/run_test.sol deleted file mode 100644 index 5ac4e1fdfd23..000000000000 --- a/cli/testdata/run_test.sol +++ /dev/null @@ -1,32 +0,0 @@ -pragma solidity ^0.7.6; - -interface ERC20 { - function balanceOf(address) external view returns (uint256); - function deposit() payable external; -} - -interface VM { - function startPrank(address) external; -} - -contract C { - ERC20 weth = ERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); - VM constant vm = VM(address(bytes20(uint160(uint256(keccak256('hevm cheat code')))))); - address who = 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045; - - event log_uint(uint256); - - function run() external { - // impersonate the account - vm.startPrank(who); - - uint256 balanceBefore = weth.balanceOf(who); - emit log_uint(balanceBefore); - - weth.deposit{value: 15 ether}(); - - uint256 balanceAfter = weth.balanceOf(who); - emit log_uint(balanceAfter); - - } -} \ No newline at end of file diff --git a/cli/testdata/run_test_lib_linking.sol b/cli/testdata/run_test_lib_linking.sol deleted file mode 100644 index eb42dfc73a7e..000000000000 --- a/cli/testdata/run_test_lib_linking.sol +++ /dev/null @@ -1,38 +0,0 @@ -pragma solidity ^0.7.6; - -interface ERC20 { - function balanceOf(address) external view returns (uint256); - function deposit() payable external; -} - -interface VM { - function startPrank(address) external; -} - -library T { - function getBal(ERC20 t, address who) public view returns (uint256) { - return t.balanceOf(who); - } -} - -contract C { - ERC20 weth = ERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); - VM constant vm = VM(address(bytes20(uint160(uint256(keccak256('hevm cheat code')))))); - address who = 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045; - - event log_uint(uint256); - - function run() external { - // impersonate the account - vm.startPrank(who); - - uint256 balanceBefore = T.getBal(weth, who); - emit log_uint(balanceBefore); - - weth.deposit{value: 15 ether}(); - - uint256 balanceAfter = weth.balanceOf(who); - emit log_uint(balanceAfter); - - } -} \ No newline at end of file diff --git a/evm/src/executor/builder.rs b/evm/src/executor/builder.rs index df3cfce138bf..8e2e04caefd4 100644 --- a/evm/src/executor/builder.rs +++ b/evm/src/executor/builder.rs @@ -10,7 +10,7 @@ use super::{ Executor, }; -#[derive(Default)] +#[derive(Default, Debug)] pub struct ExecutorBuilder { /// The execution environment configuration. env: Env, diff --git a/evm/src/executor/inspector/cheatcodes/ext.rs b/evm/src/executor/inspector/cheatcodes/ext.rs index 43775d4065fe..55ae60d98e14 100644 --- a/evm/src/executor/inspector/cheatcodes/ext.rs +++ b/evm/src/executor/inspector/cheatcodes/ext.rs @@ -56,7 +56,6 @@ fn get_code(path: &str) -> Result { let file = parts[0]; let contract_name = if parts.len() == 1 { parts[0].replace(".sol", "") } else { parts[1].to_string() }; - let out_dir = ProjectPathsConfig::find_artifacts_dir(Path::new("./")); out_dir.join(format!("{}/{}.json", file, contract_name)) }; diff --git a/evm/src/executor/inspector/mod.rs b/evm/src/executor/inspector/mod.rs index cabc63ae731b..cf885880b41c 100644 --- a/evm/src/executor/inspector/mod.rs +++ b/evm/src/executor/inspector/mod.rs @@ -16,7 +16,7 @@ pub use stack::InspectorStack; mod cheatcodes; pub use cheatcodes::Cheatcodes; -#[derive(Default, Clone)] +#[derive(Default, Clone, Debug)] pub struct InspectorStackConfig { /// Whether or not cheatcodes are enabled pub cheatcodes: bool, diff --git a/evm/src/trace/mod.rs b/evm/src/trace/mod.rs index ad411b2817a1..a91f3f363be0 100644 --- a/evm/src/trace/mod.rs +++ b/evm/src/trace/mod.rs @@ -354,7 +354,7 @@ impl fmt::Display for CallTrace { } /// Specifies the kind of trace. -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum TraceKind { Deployment, Setup, diff --git a/forge/src/lib.rs b/forge/src/lib.rs index be4ca24415e6..b0625bf5bd45 100644 --- a/forge/src/lib.rs +++ b/forge/src/lib.rs @@ -22,9 +22,9 @@ pub use foundry_evm::*; pub mod test_helpers { use crate::TestFilter; use ethers::{ - prelude::Lazy, - solc::{AggregatedCompilerOutput, Project, ProjectPathsConfig}, - types::U256, + prelude::{Lazy, ProjectCompileOutput}, + solc::{Project, ProjectPathsConfig}, + types::{Address, U256}, }; use foundry_evm::{ executor::{ @@ -35,17 +35,28 @@ pub mod test_helpers { fuzz::FuzzedExecutor, CALLER, }; - - pub static COMPILED: Lazy = Lazy::new(|| { - let paths = - ProjectPathsConfig::builder().root("testdata").sources("testdata").build().unwrap(); + use std::str::FromStr; + + pub static COMPILED: Lazy = Lazy::new(|| { + let paths = ProjectPathsConfig::builder() + .root("../testdata") + .sources("../testdata") + .build() + .unwrap(); let project = Project::builder().paths(paths).ephemeral().no_artifacts().build().unwrap(); - project.compile().unwrap().output() + project.compile().unwrap() }); pub static EVM_OPTS: Lazy = Lazy::new(|| EvmOpts { - env: Env { gas_limit: 18446744073709551615, chain_id: Some(99), ..Default::default() }, + env: Env { + gas_limit: 18446744073709551615, + chain_id: Some(99), + tx_origin: Address::from_str("00a329c0648769a73afac7f9381e08fb43dbea72").unwrap(), + ..Default::default() + }, + sender: Address::from_str("00a329c0648769a73afac7f9381e08fb43dbea72").unwrap(), initial_balance: U256::MAX, + ffi: true, ..Default::default() }); diff --git a/forge/src/multi_runner.rs b/forge/src/multi_runner.rs index f407f264f0d6..f41bebd0d0a4 100644 --- a/forge/src/multi_runner.rs +++ b/forge/src/multi_runner.rs @@ -264,91 +264,274 @@ mod tests { use super::*; use crate::{ decode::decode_console_logs, - test_helpers::{filter::Filter, EVM_OPTS}, + test_helpers::{filter::Filter, COMPILED, EVM_OPTS}, }; - use ethers::solc::{Project, ProjectPathsConfig}; - use std::collections::HashMap; + use foundry_evm::trace::TraceKind; - fn project() -> Project { - let paths = - ProjectPathsConfig::builder().root("testdata").sources("testdata").build().unwrap(); - - Project::builder().paths(paths).ephemeral().no_artifacts().build().unwrap() + /// Builds a base runner + fn base_runner() -> MultiContractRunnerBuilder { + MultiContractRunnerBuilder::default().sender(EVM_OPTS.sender) } + /// Builds a non-tracing runner fn runner() -> MultiContractRunner { - MultiContractRunnerBuilder::default() - .build(project().compile().unwrap(), EVM_OPTS.clone()) - .unwrap() + base_runner().build((*COMPILED).clone(), EVM_OPTS.clone()).unwrap() } - #[test] - fn test_multi_runner() { - let mut runner = runner(); - let results = runner.test(&Filter::new(".*", ".*", ".*"), None).unwrap(); - - // 9 contracts being built - assert_eq!(results.keys().len(), 12); - for (key, contract_tests) in results { - match key.as_str() { - // Tests that should revert - "SetupTest.json:SetupTest" | "FuzzTests.json:FuzzTests" => { - assert!(contract_tests.iter().all(|(_, result)| !result.success)) + /// Builds a tracing runner + fn tracing_runner() -> MultiContractRunner { + let mut opts = EVM_OPTS.clone(); + opts.verbosity = 5; + base_runner().build((*COMPILED).clone(), opts).unwrap() + } + + /// A helper to assert the outcome of multiple tests with helpful assert messages + fn assert_multiple( + actuals: &BTreeMap>, + expecteds: BTreeMap<&str, Vec<(&str, bool, Option, Option>)>>, + ) { + assert_eq!( + actuals.len(), + expecteds.len(), + "We did not run as many contracts as we expected" + ); + for (contract_name, tests) in &expecteds { + assert_eq!( + actuals[*contract_name].len(), + expecteds[contract_name].len(), + "We did not run as many test functions as we expected for {}", + contract_name + ); + for (test_name, should_pass, reason, expected_logs) in tests { + let logs = decode_console_logs(&actuals[*contract_name][*test_name].logs); + + if *should_pass { + assert!( + actuals[*contract_name][*test_name].success, + "Test {} did not pass as expected.\nReason: {:?}\nLogs:\n{}", + test_name, + actuals[*contract_name][*test_name].reason, + logs.join("\n") + ); + } else { + assert!( + !actuals[*contract_name][*test_name].success, + "Test {} did not fail as expected.\nLogs:\n{}", + test_name, + logs.join("\n") + ); + assert_eq!( + actuals[*contract_name][*test_name].reason, *reason, + "Failure reason for test {} did not match what we expected.", + test_name + ); } - // The rest should pass - _ => { - assert_ne!(contract_tests.keys().len(), 0); - assert!(contract_tests.iter().all(|(_, result)| { result.success })) + + if let Some(expected_logs) = expected_logs { + assert!( + logs.iter().eq(expected_logs.iter()), + "Logs did not match for test {}.\nExpected:\n{}\n\nGot:\n{}", + test_name, + logs.join("\n"), + expected_logs.join("\n") + ); } } } + } - // can also filter - let only_gm = runner.test(&Filter::new("testGm.*", ".*", ".*"), None).unwrap(); - assert_eq!(only_gm.len(), 1); + #[test] + fn test_core() { + let mut runner = runner(); + let results = runner.test(&Filter::new(".*", ".*", ".*core"), None).unwrap(); + + assert_multiple( + &results, + BTreeMap::from([ + ( + "FailingSetupTest.json:FailingSetupTest", + vec![( + "setUp()", + false, + Some("Setup failed: setup failed predictably".to_string()), + None, + )], + ), + ("RevertingTest.json:RevertingTest", vec![("testFailRevert()", true, None, None)]), + ( + "SetupConsistencyCheck.json:SetupConsistencyCheck", + vec![("testAdd()", true, None, None), ("testMultiply()", true, None, None)], + ), + ( + "DSStyleTest.json:DSStyleTest", + vec![ + ("testAddresses()", true, None, None), + ("testEnvironment()", true, None, None), + ], + ), + ( + "PaymentFailureTest.json:PaymentFailureTest", + vec![("testCantPay()", false, Some("Revert".to_string()), None)], + ), + ( + "LibraryLinkingTest.json:LibraryLinkingTest", + vec![("testDirect()", true, None, None), ("testNested()", true, None, None)], + ), + ("AbstractTest.json:AbstractTest", vec![("testSomething()", true, None, None)]), + ]), + ); + } - assert_eq!(only_gm["GmTest.json:GmTest"].len(), 1); - assert!(only_gm["GmTest.json:GmTest"]["testGm()"].success); + #[test] + fn test_logs() { + let mut runner = runner(); + let results = runner.test(&Filter::new(".*", ".*", ".*logs"), None).unwrap(); + + assert_multiple( + &results, + BTreeMap::from([ + ( + "DebugLogsTest.json:DebugLogsTest", + vec![ + ("test1()", true, None, Some(vec!["0".into(), "1".into(), "2".into()])), + ("test2()", true, None, Some(vec!["0".into(), "1".into(), "3".into()])), + ( + "testFailWithRequire()", + true, + None, + Some(vec!["0".into(), "1".into(), "5".into()]), + ), + ( + "testFailWithRevert()", + true, + None, + Some(vec!["0".into(), "1".into(), "4".into(), "100".into()]), + ), + ], + ), + ( + "HardhatLogsTest.json:HardhatLogsTest", + vec![ + ( + "testInts()", + true, + None, + Some(vec![ + "constructor".into(), + "0".into(), + "1".into(), + "2".into(), + "3".into(), + ]), + ), + ( + "testMisc()", + true, + None, + Some(vec![ + "constructor".into(), + "testMisc, 0x0000000000000000000000000000000000000001".into(), + "testMisc, 42".into(), + ]), + ), + ( + "testStrings()", + true, + None, + Some(vec!["constructor".into(), "testStrings".into()]), + ), + ], + ), + ]), + ); } #[test] - fn test_abstract_contract() { + fn test_cheats() { let mut runner = runner(); - let results = runner.test(&Filter::new(".*", ".*", ".*"), None).unwrap(); - assert!(results.get("Tests.json:Tests").is_none()); - assert!(results.get("ATests.json:ATests").is_some()); - assert!(results.get("BTests.json:BTests").is_some()); + let results = runner.test(&Filter::new(".*", ".*", ".*cheats"), None).unwrap(); + + for (_, tests) in results { + for (test_name, result) in tests { + assert!( + result.success, + "Test {} did not pass as expected.\nReason: {:?}", + test_name, result.reason + ); + } + } } #[test] - fn test_debug_logs() { + fn test_fuzz() { let mut runner = runner(); - let results = runner.test(&Filter::new(".*", ".*", ".*"), None).unwrap(); + let results = runner.test(&Filter::new(".*", ".*", ".*fuzz"), None).unwrap(); + + for (_, tests) in results { + for (test_name, result) in tests { + match test_name.as_ref() { + "testPositive(uint256)" | "testSuccessfulFuzz(uint128,uint128)" => assert!( + result.success, + "Test {} did not pass as expected.\nReason: {:?}", + test_name, result.reason + ), + _ => assert!( + !result.success, + "Test {} did not fail as expected.\nReason: {:?}", + test_name, result.reason + ), + } + } + } + } - let reasons = results["DebugLogsTest.json:DebugLogsTest"] - .iter() - .map(|(name, res)| (name, decode_console_logs(&res.logs))) - .collect::>(); - assert_eq!( - reasons[&"test1()".to_owned()], - vec!["constructor".to_owned(), "setUp".to_owned(), "one".to_owned()] - ); - assert_eq!( - reasons[&"test2()".to_owned()], - vec!["constructor".to_owned(), "setUp".to_owned(), "two".to_owned()] - ); - assert_eq!( - reasons[&"testFailWithRevert()".to_owned()], - vec![ - "constructor".to_owned(), - "setUp".to_owned(), - "three".to_owned(), - "failure".to_owned() - ] - ); - assert_eq!( - reasons[&"testFailWithRequire()".to_owned()], - vec!["constructor".to_owned(), "setUp".to_owned(), "four".to_owned()] - ); + #[test] + fn test_trace() { + let mut runner = tracing_runner(); + let results = runner.test(&Filter::new(".*", ".*", ".*trace"), None).unwrap(); + + // TODO: This trace test is very basic - it is probably a good candidate for snapshot + // testing. + for (_, tests) in results { + for (test_name, result) in tests { + let deployment_traces = result + .traces + .iter() + .filter(|(kind, _)| *kind == TraceKind::Deployment) + .collect::>(); + let setup_traces = result + .traces + .iter() + .filter(|(kind, _)| *kind == TraceKind::Setup) + .collect::>(); + let execution_traces = result + .traces + .iter() + .filter(|(kind, _)| *kind == TraceKind::Deployment) + .collect::>(); + + assert_eq!( + deployment_traces.len(), + 1, + "Test {} did not have exactly 1 deployment trace.", + test_name + ); + assert!(setup_traces.len() <= 1, "Test {} had more than 1 setup trace.", test_name); + assert_eq!( + execution_traces.len(), + 1, + "Test {} did not not have exactly 1 execution trace.", + test_name + ); + } + } + } + + #[test] + fn test_doesnt_run_abstract_contract() { + let mut runner = runner(); + let results = runner.test(&Filter::new(".*", ".*", ".*core/Abstract.t.sol"), None).unwrap(); + assert!(results.get("AbstractTestBase.json:AbstractTestBase").is_none()); + assert!(results.get("AbstractTest.json:AbstractTest").is_some()); } } diff --git a/forge/src/runner.rs b/forge/src/runner.rs index 56ae20003220..38eebe6e6cec 100644 --- a/forge/src/runner.rs +++ b/forge/src/runner.rs @@ -405,146 +405,3 @@ impl<'a, DB: DatabaseRef + Send + Sync> ContractRunner<'a, DB> { }) } } - -#[cfg(test)] -mod tests { - use super::*; - use crate::test_helpers::{filter::Filter, fuzz_executor, test_executor, COMPILED, EVM_OPTS}; - use foundry_evm::{ - executor::{builder::Backend, DeployResult}, - fuzz::FuzzTestResult, - }; - use proptest::test_runner::Config as FuzzConfig; - - pub fn runner<'a>( - abi: &'a Abi, - code: ethers::prelude::Bytes, - libs: &'a mut Vec, - ) -> ContractRunner<'a, Backend> { - ContractRunner::new( - test_executor(), - abi, - code, - (&*EVM_OPTS).initial_balance, - None, - None, - libs, - ) - } - - #[test] - fn test_function_overriding() { - let compiled = COMPILED.find("GreeterTest").expect("could not find contract"); - - let (_, code, _) = compiled.into_parts_or_default(); - let mut libs = vec![]; - let mut runner = runner(compiled.abi.as_ref().unwrap(), code, &mut libs); - - let mut cfg = FuzzConfig::default(); - cfg.failure_persistence = None; - let fuzzer = TestRunner::new(cfg); - let results = - runner.run_tests(&Filter::new("testGreeting", ".*", ".*"), Some(fuzzer)).unwrap(); - assert!(results["testGreeting()"].success); - assert!(results["testGreeting(string)"].success); - assert!(results["testGreeting(string,string)"].success); - } - - #[test] - fn test_fuzzing_counterexamples() { - let compiled = COMPILED.find("GreeterTest").expect("could not find contract"); - let (_, code, _) = compiled.into_parts_or_default(); - let mut libs = vec![]; - let mut runner = runner(compiled.abi.as_ref().unwrap(), code, &mut libs); - - let mut cfg = FuzzConfig::default(); - cfg.failure_persistence = None; - let fuzzer = TestRunner::new(cfg); - let results = - runner.run_tests(&Filter::new("testFuzz.*", ".*", ".*"), Some(fuzzer)).unwrap(); - for (_, res) in results { - assert!(!res.success); - assert!(res.counterexample.is_some()); - } - } - - #[test] - fn test_fuzzing_ok() { - let compiled = COMPILED.find("GreeterTest").expect("could not find contract"); - let (_, code, _) = compiled.into_parts_or_default(); - let mut libs = vec![]; - let mut runner = runner(compiled.abi.as_ref().unwrap(), code, &mut libs); - - let mut cfg = FuzzConfig::default(); - cfg.failure_persistence = None; - let fuzzer = TestRunner::new(cfg); - let res = - runner.run_tests(&Filter::new("testStringFuzz.*", ".*", ".*"), Some(fuzzer)).unwrap(); - assert_eq!(res.len(), 1); - assert!(res["testStringFuzz(string)"].success); - assert!(res["testStringFuzz(string)"].counterexample.is_none()); - } - - #[test] - fn test_fuzz_shrinking() { - let compiled = COMPILED.find("GreeterTest").expect("could not find contract"); - let (_, code, _) = compiled.into_parts_or_default(); - let mut libs = vec![]; - let mut runner = runner(compiled.abi.as_ref().unwrap(), code, &mut libs); - - let mut cfg = FuzzConfig::default(); - cfg.failure_persistence = None; - let fuzzer = TestRunner::new(cfg); - let res = - runner.run_tests(&Filter::new("testShrinking.*", ".*", ".*"), Some(fuzzer)).unwrap(); - assert_eq!(res.len(), 1); - - let res = res["testShrinking(uint256,uint256)"].clone(); - assert!(!res.success); - - // get the counterexample with shrinking enabled by default - let counterexample = res.counterexample.unwrap(); - - // casting to u64 here is safe because the shrunk result is always gonna be small - // enough to fit in a u64, whereas as seen below, that's not possible without - // shrinking - let product_with_shrinking: u64 = - counterexample.args.into_iter().map(|x| x.into_uint().unwrap().as_u64()).product(); - - let mut cfg = FuzzConfig::default(); - cfg.failure_persistence = None; - // we reduce the shrinking iters and observe a larger result - cfg.max_shrink_iters = 5; - let fuzzer = TestRunner::new(cfg); - let res = - runner.run_tests(&Filter::new("testShrinking.*", ".*", ".*"), Some(fuzzer)).unwrap(); - assert_eq!(res.len(), 1); - - let res = res["testShrinking(uint256,uint256)"].clone(); - assert!(!res.success); - - // get the non-shrunk result - let counterexample = res.counterexample.unwrap(); - let args = - counterexample.args.into_iter().map(|x| x.into_uint().unwrap()).collect::>(); - let product_without_shrinking = args[0].saturating_mul(args[1]); - assert!(product_without_shrinking > product_with_shrinking.into()); - } - - #[test] - fn prints_fuzzed_revert_reasons() { - let mut executor = test_executor(); - - let compiled = COMPILED.find("FuzzTests").expect("could not find contract"); - let DeployResult { address, .. } = - executor.deploy(*CALLER, compiled.bytecode().unwrap().0.clone(), 0.into()).unwrap(); - - let executor = fuzz_executor(&executor); - - let func = compiled.abi.unwrap().function("testFuzzedRevert").unwrap(); - let FuzzTestResult { reason, success, .. } = - executor.fuzz(func, address, false, compiled.abi); - assert!(!success, "test did not revert"); - assert_eq!(reason, Some("fuzztest-revert".to_string())); - } -} diff --git a/forge/testdata/Abstract.sol b/forge/testdata/Abstract.sol deleted file mode 100644 index af359060f899..000000000000 --- a/forge/testdata/Abstract.sol +++ /dev/null @@ -1,26 +0,0 @@ -pragma solidity 0.8.10; - -interface IContract { function foo() external; } - -// your 2 implementations -contract A is IContract { function foo() public { } } -contract B is IContract { function foo() public { } } - -// the shared test suite -abstract contract Tests { - IContract myContract; - // this function is part of any contract that inherits `Tests` - function testFoo() public { myContract.foo(); } -} - -contract ATests is Tests { - function setUp() public { - myContract = IContract(address(new A())); - } -} - -contract BTests is Tests { - function setUp() public { - myContract = IContract(address(new B())); - } -} diff --git a/forge/testdata/BadSetup.sol b/forge/testdata/BadSetup.sol deleted file mode 100644 index 99c8ed11ceee..000000000000 --- a/forge/testdata/BadSetup.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity =0.8.1; - -contract DsTestMini { - bool public failed; - - function fail() private { - failed = true; - } - - function assertEq(uint a, uint b) internal { - if (a != b) { - fail(); - } - } -} - -contract SetupTest is DsTestMini { - function setUp() public { - T t = new T(10); - } - - function testSetupBad() public { - } - - function testSetupBad2() public { - } -} - - -contract T { - constructor(uint256 a) { - uint256 b = a - 100; - } -} \ No newline at end of file diff --git a/forge/testdata/FooTest.sol b/forge/testdata/FooTest.sol deleted file mode 100644 index a826c8636019..000000000000 --- a/forge/testdata/FooTest.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity =0.8.1; - -contract DsTestMini { - bool public failed; - - function fail() private { - failed = true; - } - - function assertEq(uint a, uint b) internal { - if (a != b) { - fail(); - } - } -} - -contract FooTest is DsTestMini { - uint256 x; - - function setUp() public { - x = 1; - } - - function testX() public { - require(x == 1, "x is not one"); - } - - function testFailX() public { - assertEq(x, 2); - } -} diff --git a/forge/testdata/FooTest2.sol b/forge/testdata/FooTest2.sol deleted file mode 100644 index bdc17a53a2d7..000000000000 --- a/forge/testdata/FooTest2.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity =0.8.1; - -contract FooBar { - uint256 x; - - function setUp() public { - x = 1; - } - - function testX() public { - require(x == 1, "x is not one"); - } -} diff --git a/forge/testdata/Fuzz.sol b/forge/testdata/Fuzz.sol deleted file mode 100644 index e5552b4a4159..000000000000 --- a/forge/testdata/Fuzz.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity ^0.8.10; - -contract FuzzTests { - function testFuzzedRevert(uint256 x) public { - require(x == 5, "fuzztest-revert"); - } -} diff --git a/forge/testdata/GreetTest.sol b/forge/testdata/GreetTest.sol deleted file mode 100644 index d1d10548f4fa..000000000000 --- a/forge/testdata/GreetTest.sol +++ /dev/null @@ -1,114 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma abicoder v2; -pragma solidity =0.7.6; - -contract Greeter { - string public greeting; - - function greet(string memory _greeting) public { - greeting = _greeting; - } - - function gm() public { - greeting = "gm"; - } -} - -contract GreeterTestSetup { - Greeter greeter; - - function greeting() public view returns (string memory) { - return greeter.greeting(); - } - - function setUp() public { - greeter = new Greeter(); - } -} - -contract GreeterTest is GreeterTestSetup { - function greet(string memory _greeting) public { - greeter.greet(_greeting); - } - - function testShrinking(uint256 x, uint256 y) public { - require(x * y <= 100, "product greater than 100"); - } - - - function testStringFuzz(string memory myGreeting) public { - greeter.greet(myGreeting); - require(keccak256(abi.encodePacked(greeter.greeting())) == keccak256(abi.encodePacked(myGreeting)), "not equal"); - } - - function testFuzzFixedArray(uint256[2] memory x) public { - // filter out x[1] == 0 since it'll drain all our gas in the - // division by zero from all future tests - if (x[1] == 0) return; - require(x[1] / x[1] == 0); - } - - function testFuzzVariableArray(uint256[] memory x) public { - require(x[0] == x[1]); - } - - function testFuzzBytes1(bytes1 x) public { - require(x == 0); - } - - function testFuzzBytes14(bytes14 x) public { - require(x == 0); - } - - function testFuzzBytes32(bytes32 x) public { - require(x == 0); - } - - function testFuzzI256(int256 x) public { - require(x >= 0); - } - - struct Foo { - Bar bar; - } - - struct Bar { - uint256 baz; - } - - function testFuzzAbiCoderV2(Foo memory foo) public { - require(foo.bar.baz < 5); - } - - // check the positive case - function testGreeting() public { - greeter.greet("yo"); - require(keccak256(abi.encodePacked(greeter.greeting())) == keccak256(abi.encodePacked("yo")), "not equal"); - } - function testGreeting(string memory message) public { - greeter.greet(message); - require(keccak256(abi.encodePacked(greeter.greeting())) == keccak256(abi.encodePacked(message)), "not equal"); - } - function testGreeting(string memory message, string memory _message) public { - greeter.greet(message); - require(keccak256(abi.encodePacked(greeter.greeting())) == keccak256(abi.encodePacked(message)), "not equal"); - } - - - // check the unhappy case - function testFailGreeting() public { - greeter.greet("yo"); - require(keccak256(abi.encodePacked(greeter.greeting())) == keccak256(abi.encodePacked("hi")), "not equal to `hi`"); - } - - function testIsolation() public { - require(bytes(greeter.greeting()).length == 0); - } -} - -contract GmTest is GreeterTestSetup { - function testGm() public { - greeter.gm(); - require(keccak256(abi.encodePacked(greeter.greeting())) == keccak256(abi.encodePacked("gm")), "not equal"); - } -} diff --git a/forge/testdata/LargeContract.sol b/forge/testdata/LargeContract.sol deleted file mode 100644 index f642885cf9f0..000000000000 --- a/forge/testdata/LargeContract.sol +++ /dev/null @@ -1,5 +0,0 @@ -pragma solidity >=0.4.0; - -contract LargeContract { - string public foo = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; -} diff --git a/forge/testdata/LibLinking.sol b/forge/testdata/LibLinking.sol deleted file mode 100644 index 53a59b1921fa..000000000000 --- a/forge/testdata/LibLinking.sol +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity 0.8.11; - -// a library that needs to be linked with another library -library LibTestNested { - enum TestEnum2 { - A, - B, - C - } - - function foobar(TestEnum2 test) public view returns (uint256) { - return LibTest.foobar(101); - } -} - -// a library -library LibTest { - function foobar(uint256 a) public view returns (uint256) { - return a * 100; - } -} - - -// a contract that uses 2 linked libraries -contract Main { - function foo() public returns (uint256) { - return LibTest.foobar(1); - } - - function bar() public returns (uint256) { - return LibTestNested.foobar(LibTestNested.TestEnum2(0)); - } -} - -contract DsTestMini { - bool public failed; - - function fail() private { - failed = true; - } - - function assertEq(uint a, uint b) internal { - if (a != b) { - fail(); - } - } -} - - -contract LibLinkingTest is DsTestMini { - Main main; - function setUp() public { - main = new Main(); - } - - function testCall() public { - assertEq(100, main.foo()); - } - - function testCall2() public { - assertEq(10100, main.bar()); - } -} diff --git a/forge/testdata/Logs.sol b/forge/testdata/Logs.sol deleted file mode 100644 index 091bf7558cdf..000000000000 --- a/forge/testdata/Logs.sol +++ /dev/null @@ -1,45 +0,0 @@ -pragma solidity ^0.8.0; - -import "./DsTest.sol"; - -contract DebugLogs is DSTest { - function test_log() public { - emit log("Hi"); - emit logs(hex"1234"); - emit log_address(0x1111111111111111111111111111111111111111); - emit log_bytes32(keccak256(abi.encodePacked("foo"))); - emit log_int(123); - emit log_uint(1234); - emit log_bytes(hex"4567"); - emit log_string("lol"); - emit log_named_address("addr", 0x2222222222222222222222222222222222222222); - emit log_named_bytes32("key", keccak256(abi.encodePacked("foo"))); - emit log_named_decimal_int("key", 123, 18); - emit log_named_decimal_int("key", -123, 18); - emit log_named_decimal_int("key", 1.0e18, 18); - emit log_named_decimal_int("key", -1.0e18, 18); - emit log_named_decimal_int("key", -123, 12); - emit log_named_decimal_int("key", -1.0e18, 12); - emit log_named_decimal_uint("key", 1234, 18); - emit log_named_decimal_uint("key", 1.0e18, 18); - emit log_named_decimal_uint("key", 1234, 12); - emit log_named_decimal_uint("key", 1.0e18, 12); - emit log_named_int("key", 123); - emit log_named_uint("key", 1234); - emit log_named_bytes("key", hex"4567"); - emit log_named_string("key", "lol"); - } - - function test_log_elsewhere() public { - OtherContract otherContract = new OtherContract(); - otherContract.test_log(); - } -} - -contract OtherContract is DSTest { - function test_log() public { - emit log_address(0x1111111111111111111111111111111111111111); - emit log("Hi"); - } -} - diff --git a/forge/testdata/Trace.sol b/forge/testdata/Trace.sol deleted file mode 100644 index 5b905aa44d63..000000000000 --- a/forge/testdata/Trace.sol +++ /dev/null @@ -1,75 +0,0 @@ -pragma solidity ^0.8.0; - - -interface RecursiveCallee { - function recurseCall(uint256 neededDepth, uint256 depth) external returns (uint256); - function recurseCreate(uint256 neededDepth, uint256 depth) external returns (uint256); - function someCall() external; - function negativeNum() external returns (int256); -} - -contract RecursiveCall { - event Depth(uint256 depth); - event ChildDepth(uint256 childDepth); - event CreatedChild(uint256 childDepth); - Trace factory; - - constructor(address _factory) { - factory = Trace(_factory); - } - - function recurseCall(uint256 neededDepth, uint256 depth) public returns (uint256) { - if (depth == neededDepth) { - RecursiveCallee(address(this)).negativeNum(); - return neededDepth; - } - uint256 childDepth = RecursiveCallee(address(this)).recurseCall(neededDepth, depth + 1); - emit ChildDepth(childDepth); - RecursiveCallee(address(this)).someCall(); - emit Depth(depth); - return depth; - } - - function recurseCreate(uint256 neededDepth, uint256 depth) public returns (uint256) { - if (depth == neededDepth) { - return neededDepth; - } - RecursiveCall child = factory.create(); - emit CreatedChild(depth + 1); - uint256 childDepth = child.recurseCreate(neededDepth, depth + 1); - emit Depth(depth); - return depth; - } - - function someCall() public {} - - function negativeNum() public returns (int256) { - return -1000000000; - } -} - -contract Trace { - RecursiveCall first; - - function create() public returns (RecursiveCall) { - if (address(first) == address(0)) { - first = new RecursiveCall(address(this)); - return first; - } - return new RecursiveCall(address(this)); - } - - function recurseCall(uint256 neededDepth, uint256 depth) public returns (uint256) { - if (address(first) == address(0)) { - first = new RecursiveCall(address(this)); - } - return first.recurseCall(neededDepth, depth); - } - - function recurseCreate(uint256 neededDepth, uint256 depth) public returns (uint256) { - if (address(first) == address(0)) { - first = new RecursiveCall(address(this)); - } - return first.recurseCreate(neededDepth, depth); - } -} diff --git a/forge/testdata/WarmColdTest.sol b/forge/testdata/WarmColdTest.sol deleted file mode 100644 index 89c9782708e3..000000000000 --- a/forge/testdata/WarmColdTest.sol +++ /dev/null @@ -1,82 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity =0.8.7; - -contract DsTestMini { - bool public failed; - - function fail() private { - failed = true; - } - - function assertEq(uint a, uint b) internal { - if (a != b) { - fail(); - } - } -} - -contract Which { - uint256[] public s_playerFunds; - uint256 public s_totalFunds; - - constructor() { - s_playerFunds = [ - 1, - 15, - 22, - 199, - 234, - 5, - 234, - 5, - 2345, - 234, - 555, - 23423, - 55 - ]; - } - - function a() public { - uint256 totalFunds; - for (uint256 i = 0; i < s_playerFunds.length; i++) { - totalFunds = totalFunds + s_playerFunds[i]; - } - s_totalFunds = totalFunds; - } - - function b() external { - for (uint256 i = 0; i < s_playerFunds.length; i++) { - s_totalFunds += s_playerFunds[i]; - } - } - - function c() public { - uint256 totalFunds; - uint256[] memory playerFunds = s_playerFunds; - for (uint256 i = 0; i < playerFunds.length; i++) { - totalFunds = totalFunds + playerFunds[i]; - } - s_totalFunds = totalFunds; - } -} - -contract WhichTest is DsTestMini { - Which internal which; - - function setUp() public { - which = new Which(); - } - - function testA() public { - which.a(); - } - - function testB() public { - which.b(); - } - - function testC() public { - which.c(); - } -} diff --git a/forge/testdata/dapp-artifact.json b/forge/testdata/dapp-artifact.json deleted file mode 100644 index d8e604920654..000000000000 --- a/forge/testdata/dapp-artifact.json +++ /dev/null @@ -1 +0,0 @@ -{"contracts":{"lib/ds-test/src/test.sol":{"DSTest":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"log_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"log_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"","type":"bytes32"}],"name":"log_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"","type":"int256"}],"name":"log_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"address","name":"val","type":"address"}],"name":"log_named_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes","name":"val","type":"bytes"}],"name":"log_named_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes32","name":"val","type":"bytes32"}],"name":"log_named_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"}],"name":"log_named_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"string","name":"val","type":"string"}],"name":"log_named_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"}],"name":"log_named_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"log_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"logs","type":"event"},{"inputs":[],"name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60806040526000805460ff19166001179055348015601c57600080fd5b50609e8061002b6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063ba414fa6146037578063fa7626d414605c575b600080fd5b600054604890610100900460ff1681565b604051901515815260200160405180910390f35b60005460489060ff168156fea2646970667358221220db9381fef6a0d3f3da8dbc7fd712ee2dcdf595f08471ca7b88ef34f103ce393d64736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH1 0x1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9E DUP1 PUSH2 0x2B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBA414FA6 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH1 0x5C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x48 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x48 SWAP1 PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB SWAP4 DUP2 INVALID 0xF6 LOG0 0xD3 RETURN 0xDA DUP14 0xBC PUSH32 0xD712EE2DCDF595F08471CA7B88EF34F103CE393D64736F6C6343000807003300 ","sourceMap":"716:14223:0:-:0;;;1573:26;;;-1:-1:-1;;1573:26:0;1595:4;1573:26;;;716:14223;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@IS_TEST_532":{"entryPoint":null,"id":532,"parameterSlots":0,"returnSlots":0},"@failed_534":{"entryPoint":null,"id":534,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:203:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:92:7","statements":[{"nodeType":"YulAssignment","src":"119:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"131:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"142:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"127:3:7"},"nodeType":"YulFunctionCall","src":"127:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"119:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"161:9:7"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"186:6:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"179:6:7"},"nodeType":"YulFunctionCall","src":"179:14:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"172:6:7"},"nodeType":"YulFunctionCall","src":"172:22:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"154:6:7"},"nodeType":"YulFunctionCall","src":"154:41:7"},"nodeType":"YulExpressionStatement","src":"154:41:7"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"78:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"89:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"100:4:7","type":""}],"src":"14:187:7"}]},"contents":"{\n { }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c8063ba414fa6146037578063fa7626d414605c575b600080fd5b600054604890610100900460ff1681565b604051901515815260200160405180910390f35b60005460489060ff168156fea2646970667358221220db9381fef6a0d3f3da8dbc7fd712ee2dcdf595f08471ca7b88ef34f103ce393d64736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBA414FA6 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH1 0x5C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x48 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x48 SWAP1 PUSH1 0xFF AND DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB SWAP4 DUP2 INVALID 0xF6 LOG0 0xD3 RETURN 0xDA DUP14 0xBC PUSH32 0xD712EE2DCDF595F08471CA7B88EF34F103CE393D64736F6C6343000807003300 ","sourceMap":"716:14223:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1605:18;;;;;;;;;;;;;;;179:14:7;;172:22;154:41;;142:2;127:18;1605::0;;;;;;;1573:26;;;;;;;;"}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/ds-test/src/test.sol\":{\"keccak256\":\"0x529f30c5939d75689f6a982f7f96b8898bed30bd90ec5b385b57cab681e12b00\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://89075d5a96e87acef1d00cf556b409d1836728ec2e92f5629ceb5cae3d1e4354\",\"dweb:/ipfs/QmPAViJrxffEDns9GEMVSAzmr3soAzfrEg1CVuovwmNfnt\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":532,"contract":"lib/ds-test/src/test.sol:DSTest","label":"IS_TEST","offset":0,"slot":"0","type":"t_bool"},{"astId":534,"contract":"lib/ds-test/src/test.sol:DSTest","label":"failed","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}}}},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":347,"contract":"lib/openzeppelin-contracts/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"src/Greeter.sol":{"Errors":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220812e1e92ff3d0e2002622bd23d60d100337dd3d2c6e6a9371846f9b751f56a3864736f6c63430008070033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 0x2E 0x1E SWAP3 SELFDESTRUCT RETURNDATASIZE 0xE KECCAK256 MUL PUSH3 0x2BD23D PUSH1 0xD1 STOP CALLER PUSH30 0xD3D2C6E6A9371846F9B751F56A3864736F6C634300080700330000000000 ","sourceMap":"117:151:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;117:151:3;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220812e1e92ff3d0e2002622bd23d60d100337dd3d2c6e6a9371846f9b751f56a3864736f6c63430008070033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 0x2E 0x1E SWAP3 SELFDESTRUCT RETURNDATASIZE 0xE KECCAK256 MUL PUSH3 0x2BD23D PUSH1 0xD1 STOP CALLER PUSH30 0xD3D2C6E6A9371846F9B751F56A3864736F6C634300080700330000000000 ","sourceMap":"117:151:3:-:0;;;;;;;;"}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Greeter.sol\":\"Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"src/Greeter.sol\":{\"keccak256\":\"0xc34bd8409a4fa4a474f29c6cb7d076cf9379c9c79e257c5cda7e5d114023f0f6\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://9db4f0c61754c54fd3b3ae58dfaf72865f8134e96959f7fc295b1a8e3b7511d7\",\"dweb:/ipfs/QmPuGbtNJ9rRaC7kFWqy76A9sfcGGcYAps6yPRrW28v4xd\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"Greeter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"gm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_greeting","type":"string"}],"name":"greet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"greeting","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_363":{"entryPoint":null,"id":363,"parameterSlots":0,"returnSlots":0},"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_setOwner_442":{"entryPoint":31,"id":442,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108fe8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x8FE DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ","sourceMap":"270:379:3:-:0;;;;;;;;;;;;-1:-1:-1;867:23:1;666:10:2;867:9:1;:23::i;:::-;270:379:3;;2041:169:1;2096:16;2115:6;;-1:-1:-1;2131:17:1;;-1:-1:-1;2131:17:1;;;;;;;;2163:40;;2115:6;;;2131:17;;2115:6;;2163:40;;;2086:124;2041:169;:::o;270:379:3:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_msgSender_2136":{"entryPoint":null,"id":2136,"parameterSlots":0,"returnSlots":1},"@_setOwner_442":{"entryPoint":1330,"id":442,"parameterSlots":1,"returnSlots":0},"@gm_34":{"entryPoint":387,"id":34,"parameterSlots":0,"returnSlots":0},"@greet_59":{"entryPoint":683,"id":59,"parameterSlots":1,"returnSlots":0},"@greeting_13":{"entryPoint":891,"id":13,"parameterSlots":0,"returnSlots":0},"@owner_372":{"entryPoint":null,"id":372,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_400":{"entryPoint":241,"id":400,"parameterSlots":0,"returnSlots":0},"@transferOwnership_423":{"entryPoint":1033,"id":423,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":1600,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptr":{"entryPoint":1661,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1868,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1896,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":1977,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":2025,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint256":{"entryPoint":2109,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":2168,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4203:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"84:239:7","statements":[{"body":{"nodeType":"YulBlock","src":"130:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"139:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"142:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"132:6:7"},"nodeType":"YulFunctionCall","src":"132:12:7"},"nodeType":"YulExpressionStatement","src":"132:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"105:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"114:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"101:3:7"},"nodeType":"YulFunctionCall","src":"101:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"126:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:7"},"nodeType":"YulFunctionCall","src":"97:32:7"},"nodeType":"YulIf","src":"94:52:7"},{"nodeType":"YulVariableDeclaration","src":"155:36:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"181:9:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"168:12:7"},"nodeType":"YulFunctionCall","src":"168:23:7"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"159:5:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"277:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"286:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"289:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"279:6:7"},"nodeType":"YulFunctionCall","src":"279:12:7"},"nodeType":"YulExpressionStatement","src":"279:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"213:5:7"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"224:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"231:42:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"220:3:7"},"nodeType":"YulFunctionCall","src":"220:54:7"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"210:2:7"},"nodeType":"YulFunctionCall","src":"210:65:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"203:6:7"},"nodeType":"YulFunctionCall","src":"203:73:7"},"nodeType":"YulIf","src":"200:93:7"},{"nodeType":"YulAssignment","src":"302:15:7","value":{"name":"value","nodeType":"YulIdentifier","src":"312:5:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"302:6:7"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"50:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"61:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"73:6:7","type":""}],"src":"14:309:7"},{"body":{"nodeType":"YulBlock","src":"408:901:7","statements":[{"body":{"nodeType":"YulBlock","src":"454:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"463:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"466:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"456:6:7"},"nodeType":"YulFunctionCall","src":"456:12:7"},"nodeType":"YulExpressionStatement","src":"456:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"429:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"438:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"425:3:7"},"nodeType":"YulFunctionCall","src":"425:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"450:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"421:3:7"},"nodeType":"YulFunctionCall","src":"421:32:7"},"nodeType":"YulIf","src":"418:52:7"},{"nodeType":"YulVariableDeclaration","src":"479:37:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"506:9:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"493:12:7"},"nodeType":"YulFunctionCall","src":"493:23:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"483:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"525:28:7","value":{"kind":"number","nodeType":"YulLiteral","src":"535:18:7","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"529:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"580:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"589:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"592:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"582:6:7"},"nodeType":"YulFunctionCall","src":"582:12:7"},"nodeType":"YulExpressionStatement","src":"582:12:7"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"568:6:7"},{"name":"_1","nodeType":"YulIdentifier","src":"576:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"565:2:7"},"nodeType":"YulFunctionCall","src":"565:14:7"},"nodeType":"YulIf","src":"562:34:7"},{"nodeType":"YulVariableDeclaration","src":"605:32:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"619:9:7"},{"name":"offset","nodeType":"YulIdentifier","src":"630:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"615:3:7"},"nodeType":"YulFunctionCall","src":"615:22:7"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"609:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"685:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"694:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"697:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"687:6:7"},"nodeType":"YulFunctionCall","src":"687:12:7"},"nodeType":"YulExpressionStatement","src":"687:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"664:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"668:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"660:3:7"},"nodeType":"YulFunctionCall","src":"660:13:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"675:7:7"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"656:3:7"},"nodeType":"YulFunctionCall","src":"656:27:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"649:6:7"},"nodeType":"YulFunctionCall","src":"649:35:7"},"nodeType":"YulIf","src":"646:55:7"},{"nodeType":"YulVariableDeclaration","src":"710:26:7","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"733:2:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"720:12:7"},"nodeType":"YulFunctionCall","src":"720:16:7"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"714:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"759:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"761:16:7"},"nodeType":"YulFunctionCall","src":"761:18:7"},"nodeType":"YulExpressionStatement","src":"761:18:7"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"751:2:7"},{"name":"_1","nodeType":"YulIdentifier","src":"755:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"748:2:7"},"nodeType":"YulFunctionCall","src":"748:10:7"},"nodeType":"YulIf","src":"745:36:7"},{"nodeType":"YulVariableDeclaration","src":"790:76:7","value":{"kind":"number","nodeType":"YulLiteral","src":"800:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"794:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"875:23:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"895:2:7","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"889:5:7"},"nodeType":"YulFunctionCall","src":"889:9:7"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"879:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"907:71:7","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"929:6:7"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"953:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"957:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"949:3:7"},"nodeType":"YulFunctionCall","src":"949:13:7"},{"name":"_4","nodeType":"YulIdentifier","src":"964:2:7"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"945:3:7"},"nodeType":"YulFunctionCall","src":"945:22:7"},{"kind":"number","nodeType":"YulLiteral","src":"969:2:7","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"941:3:7"},"nodeType":"YulFunctionCall","src":"941:31:7"},{"name":"_4","nodeType":"YulIdentifier","src":"974:2:7"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"937:3:7"},"nodeType":"YulFunctionCall","src":"937:40:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"925:3:7"},"nodeType":"YulFunctionCall","src":"925:53:7"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"911:10:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"1037:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1039:16:7"},"nodeType":"YulFunctionCall","src":"1039:18:7"},"nodeType":"YulExpressionStatement","src":"1039:18:7"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"996:10:7"},{"name":"_1","nodeType":"YulIdentifier","src":"1008:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"993:2:7"},"nodeType":"YulFunctionCall","src":"993:18:7"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1016:10:7"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1028:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1013:2:7"},"nodeType":"YulFunctionCall","src":"1013:22:7"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"990:2:7"},"nodeType":"YulFunctionCall","src":"990:46:7"},"nodeType":"YulIf","src":"987:72:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1075:2:7","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1079:10:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1068:6:7"},"nodeType":"YulFunctionCall","src":"1068:22:7"},"nodeType":"YulExpressionStatement","src":"1068:22:7"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1106:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"1114:2:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1099:6:7"},"nodeType":"YulFunctionCall","src":"1099:18:7"},"nodeType":"YulExpressionStatement","src":"1099:18:7"},{"body":{"nodeType":"YulBlock","src":"1163:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1172:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1175:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1165:6:7"},"nodeType":"YulFunctionCall","src":"1165:12:7"},"nodeType":"YulExpressionStatement","src":"1165:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1140:2:7"},{"name":"_3","nodeType":"YulIdentifier","src":"1144:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:7"},"nodeType":"YulFunctionCall","src":"1136:11:7"},{"kind":"number","nodeType":"YulLiteral","src":"1149:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1132:3:7"},"nodeType":"YulFunctionCall","src":"1132:20:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1154:7:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1129:2:7"},"nodeType":"YulFunctionCall","src":"1129:33:7"},"nodeType":"YulIf","src":"1126:53:7"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1205:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1213:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1201:3:7"},"nodeType":"YulFunctionCall","src":"1201:15:7"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1222:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"1226:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1218:3:7"},"nodeType":"YulFunctionCall","src":"1218:11:7"},{"name":"_3","nodeType":"YulIdentifier","src":"1231:2:7"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1188:12:7"},"nodeType":"YulFunctionCall","src":"1188:46:7"},"nodeType":"YulExpressionStatement","src":"1188:46:7"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1258:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"1266:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1254:3:7"},"nodeType":"YulFunctionCall","src":"1254:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"1271:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1250:3:7"},"nodeType":"YulFunctionCall","src":"1250:24:7"},{"kind":"number","nodeType":"YulLiteral","src":"1276:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1243:6:7"},"nodeType":"YulFunctionCall","src":"1243:35:7"},"nodeType":"YulExpressionStatement","src":"1243:35:7"},{"nodeType":"YulAssignment","src":"1287:16:7","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1297:6:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1287:6:7"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"374:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"385:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"397:6:7","type":""}],"src":"328:981:7"},{"body":{"nodeType":"YulBlock","src":"1453:137:7","statements":[{"nodeType":"YulVariableDeclaration","src":"1463:27:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1483:6:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1477:5:7"},"nodeType":"YulFunctionCall","src":"1477:13:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1467:6:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1525:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1533:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1521:3:7"},"nodeType":"YulFunctionCall","src":"1521:17:7"},{"name":"pos","nodeType":"YulIdentifier","src":"1540:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"1545:6:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1499:21:7"},"nodeType":"YulFunctionCall","src":"1499:53:7"},"nodeType":"YulExpressionStatement","src":"1499:53:7"},{"nodeType":"YulAssignment","src":"1561:23:7","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1572:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"1577:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1568:3:7"},"nodeType":"YulFunctionCall","src":"1568:16:7"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1561:3:7"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1429:3:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1434:6:7","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1445:3:7","type":""}],"src":"1314:276:7"},{"body":{"nodeType":"YulBlock","src":"1696:125:7","statements":[{"nodeType":"YulAssignment","src":"1706:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:7"},"nodeType":"YulFunctionCall","src":"1714:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:7"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1763:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1771:42:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1759:3:7"},"nodeType":"YulFunctionCall","src":"1759:55:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:7"},"nodeType":"YulFunctionCall","src":"1741:74:7"},"nodeType":"YulExpressionStatement","src":"1741:74:7"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:7","type":""}],"src":"1595:226:7"},{"body":{"nodeType":"YulBlock","src":"1947:321:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1964:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1975:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1957:6:7"},"nodeType":"YulFunctionCall","src":"1957:21:7"},"nodeType":"YulExpressionStatement","src":"1957:21:7"},{"nodeType":"YulVariableDeclaration","src":"1987:27:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2007:6:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2001:5:7"},"nodeType":"YulFunctionCall","src":"2001:13:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1991:6:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2034:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2045:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2030:3:7"},"nodeType":"YulFunctionCall","src":"2030:18:7"},{"name":"length","nodeType":"YulIdentifier","src":"2050:6:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2023:6:7"},"nodeType":"YulFunctionCall","src":"2023:34:7"},"nodeType":"YulExpressionStatement","src":"2023:34:7"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2092:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"2100:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2088:3:7"},"nodeType":"YulFunctionCall","src":"2088:15:7"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2109:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2120:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2105:3:7"},"nodeType":"YulFunctionCall","src":"2105:18:7"},{"name":"length","nodeType":"YulIdentifier","src":"2125:6:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2066:21:7"},"nodeType":"YulFunctionCall","src":"2066:66:7"},"nodeType":"YulExpressionStatement","src":"2066:66:7"},{"nodeType":"YulAssignment","src":"2141:121:7","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2157:9:7"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2176:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"2184:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2172:3:7"},"nodeType":"YulFunctionCall","src":"2172:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"2189:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2168:3:7"},"nodeType":"YulFunctionCall","src":"2168:88:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:7"},"nodeType":"YulFunctionCall","src":"2153:104:7"},{"kind":"number","nodeType":"YulLiteral","src":"2259:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2149:3:7"},"nodeType":"YulFunctionCall","src":"2149:113:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2141:4:7"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1916:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1927:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1938:4:7","type":""}],"src":"1826:442:7"},{"body":{"nodeType":"YulBlock","src":"2447:228:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2464:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2475:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2457:6:7"},"nodeType":"YulFunctionCall","src":"2457:21:7"},"nodeType":"YulExpressionStatement","src":"2457:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2498:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2509:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2494:3:7"},"nodeType":"YulFunctionCall","src":"2494:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"2514:2:7","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2487:6:7"},"nodeType":"YulFunctionCall","src":"2487:30:7"},"nodeType":"YulExpressionStatement","src":"2487:30:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2537:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2548:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2533:3:7"},"nodeType":"YulFunctionCall","src":"2533:18:7"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"2553:34:7","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2526:6:7"},"nodeType":"YulFunctionCall","src":"2526:62:7"},"nodeType":"YulExpressionStatement","src":"2526:62:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2608:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2619:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:7"},"nodeType":"YulFunctionCall","src":"2604:18:7"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"2624:8:7","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:7"},"nodeType":"YulFunctionCall","src":"2597:36:7"},"nodeType":"YulExpressionStatement","src":"2597:36:7"},{"nodeType":"YulAssignment","src":"2642:27:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2654:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2665:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2650:3:7"},"nodeType":"YulFunctionCall","src":"2650:19:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2642:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2424:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2438:4:7","type":""}],"src":"2273:402:7"},{"body":{"nodeType":"YulBlock","src":"2854:182:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2871:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2882:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2864:6:7"},"nodeType":"YulFunctionCall","src":"2864:21:7"},"nodeType":"YulExpressionStatement","src":"2864:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2905:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2916:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2901:3:7"},"nodeType":"YulFunctionCall","src":"2901:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"2921:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2894:6:7"},"nodeType":"YulFunctionCall","src":"2894:30:7"},"nodeType":"YulExpressionStatement","src":"2894:30:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2944:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2955:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2940:3:7"},"nodeType":"YulFunctionCall","src":"2940:18:7"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"2960:34:7","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2933:6:7"},"nodeType":"YulFunctionCall","src":"2933:62:7"},"nodeType":"YulExpressionStatement","src":"2933:62:7"},{"nodeType":"YulAssignment","src":"3004:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3016:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3027:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3012:3:7"},"nodeType":"YulFunctionCall","src":"3012:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3004:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2831:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2845:4:7","type":""}],"src":"2680:356:7"},{"body":{"nodeType":"YulBlock","src":"3094:205:7","statements":[{"nodeType":"YulVariableDeclaration","src":"3104:10:7","value":{"kind":"number","nodeType":"YulLiteral","src":"3113:1:7","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3108:1:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"3173:63:7","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3198:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"3203:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3194:3:7"},"nodeType":"YulFunctionCall","src":"3194:11:7"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3217:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"3222:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3213:3:7"},"nodeType":"YulFunctionCall","src":"3213:11:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3207:5:7"},"nodeType":"YulFunctionCall","src":"3207:18:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3187:6:7"},"nodeType":"YulFunctionCall","src":"3187:39:7"},"nodeType":"YulExpressionStatement","src":"3187:39:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3134:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"3137:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3131:2:7"},"nodeType":"YulFunctionCall","src":"3131:13:7"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3145:19:7","statements":[{"nodeType":"YulAssignment","src":"3147:15:7","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3156:1:7"},{"kind":"number","nodeType":"YulLiteral","src":"3159:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:7"},"nodeType":"YulFunctionCall","src":"3152:10:7"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3147:1:7"}]}]},"pre":{"nodeType":"YulBlock","src":"3127:3:7","statements":[]},"src":"3123:113:7"},{"body":{"nodeType":"YulBlock","src":"3262:31:7","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3275:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"3280:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3271:3:7"},"nodeType":"YulFunctionCall","src":"3271:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"3289:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3264:6:7"},"nodeType":"YulFunctionCall","src":"3264:27:7"},"nodeType":"YulExpressionStatement","src":"3264:27:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3251:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"3254:6:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3248:2:7"},"nodeType":"YulFunctionCall","src":"3248:13:7"},"nodeType":"YulIf","src":"3245:48:7"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3072:3:7","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3077:3:7","type":""},{"name":"length","nodeType":"YulTypedName","src":"3082:6:7","type":""}],"src":"3041:258:7"},{"body":{"nodeType":"YulBlock","src":"3359:382:7","statements":[{"nodeType":"YulAssignment","src":"3369:22:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3383:1:7","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"3386:4:7"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3379:3:7"},"nodeType":"YulFunctionCall","src":"3379:12:7"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3369:6:7"}]},{"nodeType":"YulVariableDeclaration","src":"3400:38:7","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3430:4:7"},{"kind":"number","nodeType":"YulLiteral","src":"3436:1:7","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3426:3:7"},"nodeType":"YulFunctionCall","src":"3426:12:7"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3404:18:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"3477:31:7","statements":[{"nodeType":"YulAssignment","src":"3479:27:7","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3493:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"3501:4:7","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3489:3:7"},"nodeType":"YulFunctionCall","src":"3489:17:7"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3479:6:7"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3457:18:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3450:6:7"},"nodeType":"YulFunctionCall","src":"3450:26:7"},"nodeType":"YulIf","src":"3447:61:7"},{"body":{"nodeType":"YulBlock","src":"3567:168:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3588:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3591:77:7","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3581:6:7"},"nodeType":"YulFunctionCall","src":"3581:88:7"},"nodeType":"YulExpressionStatement","src":"3581:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3689:1:7","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3692:4:7","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:7"},"nodeType":"YulFunctionCall","src":"3682:15:7"},"nodeType":"YulExpressionStatement","src":"3682:15:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3717:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3720:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3710:6:7"},"nodeType":"YulFunctionCall","src":"3710:15:7"},"nodeType":"YulExpressionStatement","src":"3710:15:7"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3523:18:7"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3546:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"3554:2:7","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3543:2:7"},"nodeType":"YulFunctionCall","src":"3543:14:7"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3520:2:7"},"nodeType":"YulFunctionCall","src":"3520:38:7"},"nodeType":"YulIf","src":"3517:218:7"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3339:4:7","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3348:6:7","type":""}],"src":"3304:437:7"},{"body":{"nodeType":"YulBlock","src":"3784:228:7","statements":[{"body":{"nodeType":"YulBlock","src":"3815:168:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3836:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3839:77:7","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3829:6:7"},"nodeType":"YulFunctionCall","src":"3829:88:7"},"nodeType":"YulExpressionStatement","src":"3829:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3937:1:7","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3940:4:7","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3930:6:7"},"nodeType":"YulFunctionCall","src":"3930:15:7"},"nodeType":"YulExpressionStatement","src":"3930:15:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3965:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3968:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3958:6:7"},"nodeType":"YulFunctionCall","src":"3958:15:7"},"nodeType":"YulExpressionStatement","src":"3958:15:7"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"3804:1:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3797:6:7"},"nodeType":"YulFunctionCall","src":"3797:9:7"},"nodeType":"YulIf","src":"3794:189:7"},{"nodeType":"YulAssignment","src":"3992:14:7","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4001:1:7"},{"name":"y","nodeType":"YulIdentifier","src":"4004:1:7"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"3997:3:7"},"nodeType":"YulFunctionCall","src":"3997:9:7"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"3992:1:7"}]}]},"name":"mod_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3769:1:7","type":""},{"name":"y","nodeType":"YulTypedName","src":"3772:1:7","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"3778:1:7","type":""}],"src":"3746:266:7"},{"body":{"nodeType":"YulBlock","src":"4049:152:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4066:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4069:77:7","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4059:6:7"},"nodeType":"YulFunctionCall","src":"4059:88:7"},"nodeType":"YulExpressionStatement","src":"4059:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4163:1:7","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4166:4:7","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4156:6:7"},"nodeType":"YulFunctionCall","src":"4156:15:7"},"nodeType":"YulExpressionStatement","src":"4156:15:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4187:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4190:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4180:6:7"},"nodeType":"YulFunctionCall","src":"4180:15:7"},"nodeType":"YulExpressionStatement","src":"4180:15:7"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"4017:184:7"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function copy_memory_to_memory(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length) { mstore(add(dst, length), 0) }\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := mod(x, y)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ","sourceMap":"270:379:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1605:92:1;;;:::i;:::-;;973:85;1019:7;1045:6;973:85;;1045:6;;;;1741:74:7;;1729:2;1714:18;973:85:1;;;;;;;;333:131:3;;;:::i;470:177::-;;;;;;:::i;:::-;;:::i;304:22::-;;;:::i;:::-;;;;;;;:::i;1846:189:1:-;;;;;;:::i;:::-;;:::i;1605:92::-;1019:7;1045:6;1185:23;1045:6;666:10:2;1185:23:1;1177:68;;;;;;;2882:2:7;1177:68:1;;;2864:21:7;;;2901:18;;;2894:30;2960:34;2940:18;;;2933:62;3012:18;;1177:68:1;;;;;;;;;1669:21:::1;1687:1;1669:9;:21::i;:::-;1605:92::o:0;333:131:3:-;1019:7:1;1045:6;1185:23;1045:6;666:10:2;1185:23:1;1177:68;;;;;;;2882:2:7;1177:68:1;;;2864:21:7;;;2901:18;;;2894:30;2960:34;2940:18;;;2933:62;3012:18;;1177:68:1;2680:356:7;1177:68:1;382:17:3::1;397:2;382:12;:17;:::i;:::-;403:1;382:22;406:25;;;;;;;;;;;;;;;;;374:58;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;442:15:3::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;:8:::1;::::0;:15:::1;:::i;:::-;;333:131::o:0;470:177::-;577:15;562:9;545:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;535:38;;;;;;:57;;594:15;;;;;;;;;;;;;;;;;527:83;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;620:20:3;;;;:8;;:20;;;;;:::i;:::-;;470:177;:::o;304:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1846:189:1:-;1019:7;1045:6;1185:23;1045:6;666:10:2;1185:23:1;1177:68;;;;;;;2882:2:7;1177:68:1;;;2864:21:7;;;2901:18;;;2894:30;2960:34;2940:18;;;2933:62;3012:18;;1177:68:1;2680:356:7;1177:68:1;1934:22:::1;::::0;::::1;1926:73;;;::::0;::::1;::::0;;2475:2:7;1926:73:1::1;::::0;::::1;2457:21:7::0;2514:2;2494:18;;;2487:30;2553:34;2533:18;;;2526:62;2624:8;2604:18;;;2597:36;2650:19;;1926:73:1::1;2273:402:7::0;1926:73:1::1;2009:19;2019:8;2041:169:::0;2096:16;2115:6;;;2131:17;;;;;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2086:124;2041:169;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:309:7;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:7:o;328:981::-;397:6;450:2;438:9;429:7;425:23;421:32;418:52;;;466:1;463;456:12;418:52;506:9;493:23;535:18;576:2;568:6;565:14;562:34;;;592:1;589;582:12;562:34;630:6;619:9;615:22;605:32;;675:7;668:4;664:2;660:13;656:27;646:55;;697:1;694;687:12;646:55;733:2;720:16;755:2;751;748:10;745:36;;;761:18;;:::i;:::-;895:2;889:9;957:4;949:13;;800:66;945:22;;;969:2;941:31;937:40;925:53;;;993:18;;;1013:22;;;990:46;987:72;;;1039:18;;:::i;:::-;1079:10;1075:2;1068:22;1114:2;1106:6;1099:18;1154:7;1149:2;1144;1140;1136:11;1132:20;1129:33;1126:53;;;1175:1;1172;1165:12;1126:53;1231:2;1226;1222;1218:11;1213:2;1205:6;1201:15;1188:46;1276:1;1254:15;;;1271:2;1250:24;1243:35;;;;-1:-1:-1;1258:6:7;328:981;-1:-1:-1;;;;;328:981:7:o;1314:276::-;1445:3;1483:6;1477:13;1499:53;1545:6;1540:3;1533:4;1525:6;1521:17;1499:53;:::i;:::-;1568:16;;;;;1314:276;-1:-1:-1;;1314:276:7:o;1826:442::-;1975:2;1964:9;1957:21;1938:4;2007:6;2001:13;2050:6;2045:2;2034:9;2030:18;2023:34;2066:66;2125:6;2120:2;2109:9;2105:18;2100:2;2092:6;2088:15;2066:66;:::i;:::-;2184:2;2172:15;2189:66;2168:88;2153:104;;;;2259:2;2149:113;;1826:442;-1:-1:-1;;1826:442:7:o;3041:258::-;3113:1;3123:113;3137:6;3134:1;3131:13;3123:113;;;3213:11;;;3207:18;3194:11;;;3187:39;3159:2;3152:10;3123:113;;;3254:6;3251:1;3248:13;3245:48;;;3289:1;3280:6;3275:3;3271:16;3264:27;3245:48;;3041:258;;;:::o;3304:437::-;3383:1;3379:12;;;;3426;;;3447:61;;3501:4;3493:6;3489:17;3479:27;;3447:61;3554:2;3546:6;3543:14;3523:18;3520:38;3517:218;;;3591:77;3588:1;3581:88;3692:4;3689:1;3682:15;3720:4;3717:1;3710:15;3517:218;;3304:437;;;:::o;3746:266::-;3778:1;3804;3794:189;;3839:77;3836:1;3829:88;3940:4;3937:1;3930:15;3968:4;3965:1;3958:15;3794:189;-1:-1:-1;3997:9:7;;3746:266::o;4017:184::-;4069:77;4066:1;4059:88;4166:4;4163:1;4156:15;4190:4;4187:1;4180:15"}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"}],\"name\":\"greet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"greeting\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Greeter.sol\":\"Greeter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"src/Greeter.sol\":{\"keccak256\":\"0xc34bd8409a4fa4a474f29c6cb7d076cf9379c9c79e257c5cda7e5d114023f0f6\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://9db4f0c61754c54fd3b3ae58dfaf72865f8134e96959f7fc295b1a8e3b7511d7\",\"dweb:/ipfs/QmPuGbtNJ9rRaC7kFWqy76A9sfcGGcYAps6yPRrW28v4xd\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":347,"contract":"src/Greeter.sol:Greeter","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":13,"contract":"src/Greeter.sol:Greeter","label":"greeting","offset":0,"slot":"1","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"}}}}},"src/test/Greeter.t.sol":{"Gm":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"log_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"log_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"","type":"bytes32"}],"name":"log_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"","type":"int256"}],"name":"log_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"address","name":"val","type":"address"}],"name":"log_named_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes","name":"val","type":"bytes"}],"name":"log_named_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes32","name":"val","type":"bytes32"}],"name":"log_named_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"}],"name":"log_named_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"string","name":"val","type":"string"}],"name":"log_named_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"}],"name":"log_named_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"log_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"logs","type":"event"},{"inputs":[],"name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setUp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testNonOwnerCannotGm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testOwnerCanGmOnGoodBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testOwnerCannotGmOnBadBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60806040526000805460ff1916600117905534801561001d57600080fd5b506119738061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a474cdb011610050578063a474cdb014610091578063ba414fa614610099578063fa7626d4146100bf57600080fd5b80630a9254e4146100775780632a11c35d146100815780638dc5d38014610089575b600080fd5b61007f6100cc565b005b61007f6102df565b61007f6104e1565b61007f610607565b6000546100ab90610100900460ff1681565b604051901515815260200160405180910390f35b6000546100ab9060ff1681565b6040516100d8906108cd565b604051809103906000f0801580156100f4573d6000803e3d6000fd5b50600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff93841681029190911791829055604051910490911690610153906108da565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801561018c573d6000803e3d6000fd5b50600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560005460405162010000909104909116906101e8906108da565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610221573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081529083166004820152620100009091049091169063f2fde38b90602401600060405180830381600087803b1580156102c557600080fd5b505af11580156102d9573d6000803e3d6000fd5b50505050565b6040517f1f7b4f30000000000000000000000000000000000000000000000000000000008152600a6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b15801561034557600080fd5b505af1158015610359573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0129d436040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103c757600080fd5b505af11580156103db573d6000803e3d6000fd5b505050506104df600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef690cc06040518163ffffffff1660e01b815260040160006040518083038186803b15801561044a57600080fd5b505afa15801561045e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104a491908101906108e7565b6040518060400160405280600281526020017f676d00000000000000000000000000000000000000000000000000000000000081525061074a565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0129d436040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561054b57600080fd5b505af192505050801561055c575060015b6105d657610568610b3e565b806308c379a014156105ca575061057d610b5a565b8061058857506105cc565b6105c7816040518060400160405280602081526020017f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525061074a565b50565b505b3d6000803e3d6000fd5b6104df600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6040517f1f7b4f30000000000000000000000000000000000000000000000000000000008152600b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b15801561066d57600080fd5b505af1158015610681573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0129d436040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106ef57600080fd5b505af1925050508015610700575060015b6105d65761070c610b3e565b806308c379a014156105ca5750610721610b5a565b8061072c57506105cc565b6105c78160405180606001604052806021815260200161191d602191395b8060405160200161075b91906109e7565b604051602081830303815290604052805190602001208260405160200161078291906109e7565b60405160208183030381529060405280519060200120146108c9577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516108229060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516108599190610a03565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516108909190610a51565b60405180910390a16108c9600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b5050565b61097c80610c0383390190565b61039e8061157f83390190565b6000602082840312156108f957600080fd5b815167ffffffffffffffff8082111561091157600080fd5b818401915084601f83011261092557600080fd5b81518181111561093757610937610b0f565b604051915061096e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183610ac4565b80825285602082850101111561098357600080fd5b610994816020840160208601610a98565b50949350505050565b600081518084526109b5816020860160208601610a98565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516109f9818460208701610a98565b9190910192915050565b60408152600960408201527f202056616c7565206100000000000000000000000000000000000000000000006060820152608060208201526000610a4a608083018461099d565b9392505050565b60408152600960408201527f202056616c7565206200000000000000000000000000000000000000000000006060820152608060208201526000610a4a608083018461099d565b60005b83811015610ab3578181015183820152602001610a9b565b838111156102d95750506000910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610b0857610b08610b0f565b6040525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115610b575760046000803e5060005160e01c5b90565b600060443d1015610b685790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715610bb657505050505090565b8285019150815181811115610bce5750505050505090565b843d8701016020828501011115610be85750505050505090565b610bf760208286010187610ac4565b50909594505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108fe8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033608060405234801561001057600080fd5b5060405161039e38038061039e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61030b806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a26469706673582212207e86e36fa543460096d0ce1f27b7239468336340c4a0df5e85d3096f5c47f21e64736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1973 DUP1 PUSH2 0x2D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA474CDB0 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA474CDB0 EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xBA414FA6 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9254E4 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2A11C35D EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x8DC5D380 EQ PUSH2 0x89 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xCC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x2DF JUMP JUMPDEST PUSH2 0x7F PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x607 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAB SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAB SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP1 PUSH2 0x8CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF AND PUSH3 0x10000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x153 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x18C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x1E8 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x221 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1F7B4F3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0xA PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x7109709ECFA91A80626FF3989D68F67F5B1DD12D SWAP1 PUSH4 0x1F7B4F30 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC0129D43 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4DF PUSH1 0x0 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEF690CC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4A4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x74A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC0129D43 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x55C JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x5D6 JUMPI PUSH2 0x568 PUSH2 0xB3E JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x5CA JUMPI POP PUSH2 0x57D PUSH2 0xB5A JUMP JUMPDEST DUP1 PUSH2 0x588 JUMPI POP PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH2 0x74A JUMP JUMPDEST POP JUMP JUMPDEST POP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4DF PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1F7B4F3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0xB PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x7109709ECFA91A80626FF3989D68F67F5B1DD12D SWAP1 PUSH4 0x1F7B4F30 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x681 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC0129D43 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x700 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x5D6 JUMPI PUSH2 0x70C PUSH2 0xB3E JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x5CA JUMPI POP PUSH2 0x721 PUSH2 0xB5A JUMP JUMPDEST DUP1 PUSH2 0x72C JUMPI POP PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x191D PUSH1 0x21 SWAP2 CODECOPY JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x9E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x782 SWAP2 SWAP1 PUSH2 0x9E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x8C9 JUMPI PUSH32 0x41304FACD9323D75B11BCDD609CB38EFFFFDB05710F7CAF0E9B16C6D9D709F50 PUSH1 0x40 MLOAD PUSH2 0x822 SWAP1 PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4572726F723A2061203D3D2062206E6F7420736174697366696564205B737472 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E675D00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP3 PUSH1 0x40 MLOAD PUSH2 0x859 SWAP2 SWAP1 PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP2 PUSH1 0x40 MLOAD PUSH2 0x890 SWAP2 SWAP1 PUSH2 0xA51 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x8C9 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C DUP1 PUSH2 0xC03 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0x157F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH2 0x96E PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0xAC4 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x994 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA98 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x9B5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x9F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA98 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520610000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA4A PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x99D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520620000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA4A PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x99D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAB3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA9B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2D9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xB08 JUMPI PUSH2 0xB08 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0xB57 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0xB68 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP1 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0xBB6 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xBCE JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBE8 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xBF7 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xAC4 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x8FE DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x39E CODESIZE SUB DUP1 PUSH2 0x39E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30B DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033696E76 PUSH2 0x6C69 PUSH5 0x20626C6F63 PUSH12 0x206E756D6265722C20706C65 PUSH2 0x7365 KECCAK256 PUSH24 0x616974A26469706673582212207E86E36FA543460096D0CE 0x1F 0x27 0xB7 0x23 SWAP5 PUSH9 0x336340C4A0DF5E85D3 MULMOD PUSH16 0x5C47F21E64736F6C6343000807003300 ","sourceMap":"629:588:4:-:0;;;1573:26:0;;;-1:-1:-1;;1573:26:0;1595:4;1573:26;;;629:588:4;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@IS_TEST_532":{"entryPoint":null,"id":532,"parameterSlots":0,"returnSlots":0},"@assertEq_1977":{"entryPoint":1866,"id":1977,"parameterSlots":2,"returnSlots":0},"@fail_569":{"entryPoint":null,"id":569,"parameterSlots":0,"returnSlots":0},"@failed_534":{"entryPoint":null,"id":534,"parameterSlots":0,"returnSlots":0},"@setUp_308":{"entryPoint":204,"id":308,"parameterSlots":0,"returnSlots":0},"@testNonOwnerCannotGm_206":{"entryPoint":1249,"id":206,"parameterSlots":0,"returnSlots":0},"@testOwnerCanGmOnGoodBlocks_153":{"entryPoint":735,"id":153,"parameterSlots":0,"returnSlots":0},"@testOwnerCannotGmOnBadBlocks_183":{"entryPoint":1543,"id":183,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_string_memory_ptr_fromMemory":{"entryPoint":2279,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":2461,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2535,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_10_by_1__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_11_by_1__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2563,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2641,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":2712,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":2756,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x41":{"entryPoint":2831,"id":null,"parameterSlots":0,"returnSlots":0},"return_data_selector":{"entryPoint":2878,"id":null,"parameterSlots":0,"returnSlots":1},"try_decode_error_message":{"entryPoint":2906,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5223:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"105:708:7","statements":[{"body":{"nodeType":"YulBlock","src":"151:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"160:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"153:6:7"},"nodeType":"YulFunctionCall","src":"153:12:7"},"nodeType":"YulExpressionStatement","src":"153:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"126:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"135:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"122:3:7"},"nodeType":"YulFunctionCall","src":"122:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"147:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"118:3:7"},"nodeType":"YulFunctionCall","src":"118:32:7"},"nodeType":"YulIf","src":"115:52:7"},{"nodeType":"YulVariableDeclaration","src":"176:30:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"196:9:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"190:5:7"},"nodeType":"YulFunctionCall","src":"190:16:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"180:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"215:28:7","value":{"kind":"number","nodeType":"YulLiteral","src":"225:18:7","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"219:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"270:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"279:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"282:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"272:6:7"},"nodeType":"YulFunctionCall","src":"272:12:7"},"nodeType":"YulExpressionStatement","src":"272:12:7"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"258:6:7"},{"name":"_1","nodeType":"YulIdentifier","src":"266:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"255:2:7"},"nodeType":"YulFunctionCall","src":"255:14:7"},"nodeType":"YulIf","src":"252:34:7"},{"nodeType":"YulVariableDeclaration","src":"295:32:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"309:9:7"},{"name":"offset","nodeType":"YulIdentifier","src":"320:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"305:3:7"},"nodeType":"YulFunctionCall","src":"305:22:7"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"299:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"375:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"384:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"387:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"377:6:7"},"nodeType":"YulFunctionCall","src":"377:12:7"},"nodeType":"YulExpressionStatement","src":"377:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"354:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"358:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"350:3:7"},"nodeType":"YulFunctionCall","src":"350:13:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"365:7:7"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"346:3:7"},"nodeType":"YulFunctionCall","src":"346:27:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"339:6:7"},"nodeType":"YulFunctionCall","src":"339:35:7"},"nodeType":"YulIf","src":"336:55:7"},{"nodeType":"YulVariableDeclaration","src":"400:19:7","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"416:2:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"410:5:7"},"nodeType":"YulFunctionCall","src":"410:9:7"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"404:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"442:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"444:16:7"},"nodeType":"YulFunctionCall","src":"444:18:7"},"nodeType":"YulExpressionStatement","src":"444:18:7"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"434:2:7"},{"name":"_1","nodeType":"YulIdentifier","src":"438:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"431:2:7"},"nodeType":"YulFunctionCall","src":"431:10:7"},"nodeType":"YulIf","src":"428:36:7"},{"nodeType":"YulVariableDeclaration","src":"473:23:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"493:2:7","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"487:5:7"},"nodeType":"YulFunctionCall","src":"487:9:7"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"477:6:7","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"525:6:7"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"545:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"549:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"541:3:7"},"nodeType":"YulFunctionCall","src":"541:13:7"},{"kind":"number","nodeType":"YulLiteral","src":"556:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"537:3:7"},"nodeType":"YulFunctionCall","src":"537:86:7"},{"kind":"number","nodeType":"YulLiteral","src":"625:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"533:3:7"},"nodeType":"YulFunctionCall","src":"533:95:7"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"505:19:7"},"nodeType":"YulFunctionCall","src":"505:124:7"},"nodeType":"YulExpressionStatement","src":"505:124:7"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"645:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"653:2:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"638:6:7"},"nodeType":"YulFunctionCall","src":"638:18:7"},"nodeType":"YulExpressionStatement","src":"638:18:7"},{"body":{"nodeType":"YulBlock","src":"702:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"711:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"714:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"704:6:7"},"nodeType":"YulFunctionCall","src":"704:12:7"},"nodeType":"YulExpressionStatement","src":"704:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"679:2:7"},{"name":"_3","nodeType":"YulIdentifier","src":"683:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"675:3:7"},"nodeType":"YulFunctionCall","src":"675:11:7"},{"kind":"number","nodeType":"YulLiteral","src":"688:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"671:3:7"},"nodeType":"YulFunctionCall","src":"671:20:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"693:7:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"668:2:7"},"nodeType":"YulFunctionCall","src":"668:33:7"},"nodeType":"YulIf","src":"665:53:7"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"753:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"757:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"749:3:7"},"nodeType":"YulFunctionCall","src":"749:11:7"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"766:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"774:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"762:3:7"},"nodeType":"YulFunctionCall","src":"762:15:7"},{"name":"_3","nodeType":"YulIdentifier","src":"779:2:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"727:21:7"},"nodeType":"YulFunctionCall","src":"727:55:7"},"nodeType":"YulExpressionStatement","src":"727:55:7"},{"nodeType":"YulAssignment","src":"791:16:7","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"801:6:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"791:6:7"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"71:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"82:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"94:6:7","type":""}],"src":"14:799:7"},{"body":{"nodeType":"YulBlock","src":"868:267:7","statements":[{"nodeType":"YulVariableDeclaration","src":"878:26:7","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"898:5:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"892:5:7"},"nodeType":"YulFunctionCall","src":"892:12:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"882:6:7","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"920:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"925:6:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"913:6:7"},"nodeType":"YulFunctionCall","src":"913:19:7"},"nodeType":"YulExpressionStatement","src":"913:19:7"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"967:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"974:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"963:3:7"},"nodeType":"YulFunctionCall","src":"963:16:7"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"985:3:7"},{"kind":"number","nodeType":"YulLiteral","src":"990:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"981:3:7"},"nodeType":"YulFunctionCall","src":"981:14:7"},{"name":"length","nodeType":"YulIdentifier","src":"997:6:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"941:21:7"},"nodeType":"YulFunctionCall","src":"941:63:7"},"nodeType":"YulExpressionStatement","src":"941:63:7"},{"nodeType":"YulAssignment","src":"1013:116:7","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1028:3:7"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1041:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1049:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1037:3:7"},"nodeType":"YulFunctionCall","src":"1037:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"1054:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1033:3:7"},"nodeType":"YulFunctionCall","src":"1033:88:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1024:3:7"},"nodeType":"YulFunctionCall","src":"1024:98:7"},{"kind":"number","nodeType":"YulLiteral","src":"1124:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1020:3:7"},"nodeType":"YulFunctionCall","src":"1020:109:7"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1013:3:7"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"845:5:7","type":""},{"name":"pos","nodeType":"YulTypedName","src":"852:3:7","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"860:3:7","type":""}],"src":"818:317:7"},{"body":{"nodeType":"YulBlock","src":"1279:137:7","statements":[{"nodeType":"YulVariableDeclaration","src":"1289:27:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1309:6:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1303:5:7"},"nodeType":"YulFunctionCall","src":"1303:13:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1293:6:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1351:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1359:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1347:3:7"},"nodeType":"YulFunctionCall","src":"1347:17:7"},{"name":"pos","nodeType":"YulIdentifier","src":"1366:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"1371:6:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1325:21:7"},"nodeType":"YulFunctionCall","src":"1325:53:7"},"nodeType":"YulExpressionStatement","src":"1325:53:7"},{"nodeType":"YulAssignment","src":"1387:23:7","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1398:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"1403:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1394:3:7"},"nodeType":"YulFunctionCall","src":"1394:16:7"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1387:3:7"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1255:3:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1260:6:7","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1271:3:7","type":""}],"src":"1140:276:7"},{"body":{"nodeType":"YulBlock","src":"1522:125:7","statements":[{"nodeType":"YulAssignment","src":"1532:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1544:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1555:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1540:3:7"},"nodeType":"YulFunctionCall","src":"1540:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1532:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1574:9:7"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1589:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1597:42:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1585:3:7"},"nodeType":"YulFunctionCall","src":"1585:55:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:7"},"nodeType":"YulFunctionCall","src":"1567:74:7"},"nodeType":"YulExpressionStatement","src":"1567:74:7"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1491:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1502:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1513:4:7","type":""}],"src":"1421:226:7"},{"body":{"nodeType":"YulBlock","src":"1747:92:7","statements":[{"nodeType":"YulAssignment","src":"1757:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1769:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1780:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1765:3:7"},"nodeType":"YulFunctionCall","src":"1765:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1757:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1799:9:7"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1824:6:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1817:6:7"},"nodeType":"YulFunctionCall","src":"1817:14:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1810:6:7"},"nodeType":"YulFunctionCall","src":"1810:22:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1792:6:7"},"nodeType":"YulFunctionCall","src":"1792:41:7"},"nodeType":"YulExpressionStatement","src":"1792:41:7"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1716:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1727:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1738:4:7","type":""}],"src":"1652:187:7"},{"body":{"nodeType":"YulBlock","src":"1954:76:7","statements":[{"nodeType":"YulAssignment","src":"1964:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1976:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1987:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1972:3:7"},"nodeType":"YulFunctionCall","src":"1972:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1964:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:7"},{"name":"value0","nodeType":"YulIdentifier","src":"2017:6:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1999:6:7"},"nodeType":"YulFunctionCall","src":"1999:25:7"},"nodeType":"YulExpressionStatement","src":"1999:25:7"}]},"name":"abi_encode_tuple_t_rational_10_by_1__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1923:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1934:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1945:4:7","type":""}],"src":"1844:186:7"},{"body":{"nodeType":"YulBlock","src":"2145:76:7","statements":[{"nodeType":"YulAssignment","src":"2155:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2167:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2178:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2163:3:7"},"nodeType":"YulFunctionCall","src":"2163:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2155:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2197:9:7"},{"name":"value0","nodeType":"YulIdentifier","src":"2208:6:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2190:6:7"},"nodeType":"YulFunctionCall","src":"2190:25:7"},"nodeType":"YulExpressionStatement","src":"2190:25:7"}]},"name":"abi_encode_tuple_t_rational_11_by_1__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2114:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2125:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2136:4:7","type":""}],"src":"2035:186:7"},{"body":{"nodeType":"YulBlock","src":"2400:226:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2417:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2428:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2410:6:7"},"nodeType":"YulFunctionCall","src":"2410:21:7"},"nodeType":"YulExpressionStatement","src":"2410:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2451:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2462:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2447:3:7"},"nodeType":"YulFunctionCall","src":"2447:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"2467:2:7","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2440:6:7"},"nodeType":"YulFunctionCall","src":"2440:30:7"},"nodeType":"YulExpressionStatement","src":"2440:30:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2490:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2501:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2486:3:7"},"nodeType":"YulFunctionCall","src":"2486:18:7"},{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472","kind":"string","nodeType":"YulLiteral","src":"2506:34:7","type":"","value":"Error: a == b not satisfied [str"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2479:6:7"},"nodeType":"YulFunctionCall","src":"2479:62:7"},"nodeType":"YulExpressionStatement","src":"2479:62:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2561:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2572:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2557:3:7"},"nodeType":"YulFunctionCall","src":"2557:18:7"},{"hexValue":"696e675d","kind":"string","nodeType":"YulLiteral","src":"2577:6:7","type":"","value":"ing]"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2550:6:7"},"nodeType":"YulFunctionCall","src":"2550:34:7"},"nodeType":"YulExpressionStatement","src":"2550:34:7"},{"nodeType":"YulAssignment","src":"2593:27:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2605:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2616:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2601:3:7"},"nodeType":"YulFunctionCall","src":"2601:19:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2593:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2377:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2391:4:7","type":""}],"src":"2226:400:7"},{"body":{"nodeType":"YulBlock","src":"2853:228:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2870:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2881:2:7","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2863:6:7"},"nodeType":"YulFunctionCall","src":"2863:21:7"},"nodeType":"YulExpressionStatement","src":"2863:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2904:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2915:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2900:3:7"},"nodeType":"YulFunctionCall","src":"2900:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"2920:1:7","type":"","value":"9"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2893:6:7"},"nodeType":"YulFunctionCall","src":"2893:29:7"},"nodeType":"YulExpressionStatement","src":"2893:29:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2942:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2953:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2938:3:7"},"nodeType":"YulFunctionCall","src":"2938:18:7"},{"hexValue":"202056616c75652061","kind":"string","nodeType":"YulLiteral","src":"2958:11:7","type":"","value":" Value a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2931:6:7"},"nodeType":"YulFunctionCall","src":"2931:39:7"},"nodeType":"YulExpressionStatement","src":"2931:39:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2990:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3001:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2986:3:7"},"nodeType":"YulFunctionCall","src":"2986:20:7"},{"kind":"number","nodeType":"YulLiteral","src":"3008:3:7","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2979:6:7"},"nodeType":"YulFunctionCall","src":"2979:33:7"},"nodeType":"YulExpressionStatement","src":"2979:33:7"},{"nodeType":"YulAssignment","src":"3021:54:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3047:6:7"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3059:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3070:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3055:3:7"},"nodeType":"YulFunctionCall","src":"3055:19:7"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"3029:17:7"},"nodeType":"YulFunctionCall","src":"3029:46:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3021:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2822:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2833:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2844:4:7","type":""}],"src":"2631:450:7"},{"body":{"nodeType":"YulBlock","src":"3308:228:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3325:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3336:2:7","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3318:6:7"},"nodeType":"YulFunctionCall","src":"3318:21:7"},"nodeType":"YulExpressionStatement","src":"3318:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3359:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3370:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3355:3:7"},"nodeType":"YulFunctionCall","src":"3355:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"3375:1:7","type":"","value":"9"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3348:6:7"},"nodeType":"YulFunctionCall","src":"3348:29:7"},"nodeType":"YulExpressionStatement","src":"3348:29:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3397:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3408:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3393:3:7"},"nodeType":"YulFunctionCall","src":"3393:18:7"},{"hexValue":"202056616c75652062","kind":"string","nodeType":"YulLiteral","src":"3413:11:7","type":"","value":" Value b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3386:6:7"},"nodeType":"YulFunctionCall","src":"3386:39:7"},"nodeType":"YulExpressionStatement","src":"3386:39:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3445:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3456:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3441:3:7"},"nodeType":"YulFunctionCall","src":"3441:20:7"},{"kind":"number","nodeType":"YulLiteral","src":"3463:3:7","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3434:6:7"},"nodeType":"YulFunctionCall","src":"3434:33:7"},"nodeType":"YulExpressionStatement","src":"3434:33:7"},{"nodeType":"YulAssignment","src":"3476:54:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3502:6:7"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3514:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3525:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3510:3:7"},"nodeType":"YulFunctionCall","src":"3510:19:7"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"3484:17:7"},"nodeType":"YulFunctionCall","src":"3484:46:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3476:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3277:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3288:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3299:4:7","type":""}],"src":"3086:450:7"},{"body":{"nodeType":"YulBlock","src":"3594:205:7","statements":[{"nodeType":"YulVariableDeclaration","src":"3604:10:7","value":{"kind":"number","nodeType":"YulLiteral","src":"3613:1:7","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3608:1:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"3673:63:7","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3698:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"3703:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3694:3:7"},"nodeType":"YulFunctionCall","src":"3694:11:7"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3717:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"3722:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3713:3:7"},"nodeType":"YulFunctionCall","src":"3713:11:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3707:5:7"},"nodeType":"YulFunctionCall","src":"3707:18:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3687:6:7"},"nodeType":"YulFunctionCall","src":"3687:39:7"},"nodeType":"YulExpressionStatement","src":"3687:39:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3634:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"3637:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3631:2:7"},"nodeType":"YulFunctionCall","src":"3631:13:7"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3645:19:7","statements":[{"nodeType":"YulAssignment","src":"3647:15:7","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3656:1:7"},{"kind":"number","nodeType":"YulLiteral","src":"3659:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3652:3:7"},"nodeType":"YulFunctionCall","src":"3652:10:7"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3647:1:7"}]}]},"pre":{"nodeType":"YulBlock","src":"3627:3:7","statements":[]},"src":"3623:113:7"},{"body":{"nodeType":"YulBlock","src":"3762:31:7","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3775:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"3780:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3771:3:7"},"nodeType":"YulFunctionCall","src":"3771:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"3789:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3764:6:7"},"nodeType":"YulFunctionCall","src":"3764:27:7"},"nodeType":"YulExpressionStatement","src":"3764:27:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3751:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"3754:6:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3748:2:7"},"nodeType":"YulFunctionCall","src":"3748:13:7"},"nodeType":"YulIf","src":"3745:48:7"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3572:3:7","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3577:3:7","type":""},{"name":"length","nodeType":"YulTypedName","src":"3582:6:7","type":""}],"src":"3541:258:7"},{"body":{"nodeType":"YulBlock","src":"3851:261:7","statements":[{"nodeType":"YulVariableDeclaration","src":"3861:117:7","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3883:6:7"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"3899:4:7"},{"kind":"number","nodeType":"YulLiteral","src":"3905:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:7"},"nodeType":"YulFunctionCall","src":"3895:13:7"},{"kind":"number","nodeType":"YulLiteral","src":"3910:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3891:3:7"},"nodeType":"YulFunctionCall","src":"3891:86:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3879:3:7"},"nodeType":"YulFunctionCall","src":"3879:99:7"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3865:10:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"4053:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4055:16:7"},"nodeType":"YulFunctionCall","src":"4055:18:7"},"nodeType":"YulExpressionStatement","src":"4055:18:7"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3996:10:7"},{"kind":"number","nodeType":"YulLiteral","src":"4008:18:7","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3993:2:7"},"nodeType":"YulFunctionCall","src":"3993:34:7"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4032:10:7"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4044:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4029:2:7"},"nodeType":"YulFunctionCall","src":"4029:22:7"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3990:2:7"},"nodeType":"YulFunctionCall","src":"3990:62:7"},"nodeType":"YulIf","src":"3987:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4091:2:7","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4095:10:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4084:6:7"},"nodeType":"YulFunctionCall","src":"4084:22:7"},"nodeType":"YulExpressionStatement","src":"4084:22:7"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"3833:6:7","type":""},{"name":"size","nodeType":"YulTypedName","src":"3841:4:7","type":""}],"src":"3804:308:7"},{"body":{"nodeType":"YulBlock","src":"4149:152:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4166:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4169:77:7","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4159:6:7"},"nodeType":"YulFunctionCall","src":"4159:88:7"},"nodeType":"YulExpressionStatement","src":"4159:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4263:1:7","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4266:4:7","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4256:6:7"},"nodeType":"YulFunctionCall","src":"4256:15:7"},"nodeType":"YulExpressionStatement","src":"4256:15:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4287:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4290:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4280:6:7"},"nodeType":"YulFunctionCall","src":"4280:15:7"},"nodeType":"YulExpressionStatement","src":"4280:15:7"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"4117:184:7"},{"body":{"nodeType":"YulBlock","src":"4349:136:7","statements":[{"body":{"nodeType":"YulBlock","src":"4394:85:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4423:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4426:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4429:1:7","type":"","value":"4"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"4408:14:7"},"nodeType":"YulFunctionCall","src":"4408:23:7"},"nodeType":"YulExpressionStatement","src":"4408:23:7"},{"nodeType":"YulAssignment","src":"4444:25:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4455:3:7","type":"","value":"224"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4466:1:7","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4460:5:7"},"nodeType":"YulFunctionCall","src":"4460:8:7"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4451:3:7"},"nodeType":"YulFunctionCall","src":"4451:18:7"},"variableNames":[{"name":"sig","nodeType":"YulIdentifier","src":"4444:3:7"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4365:14:7"},"nodeType":"YulFunctionCall","src":"4365:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"4383:1:7","type":"","value":"3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4362:2:7"},"nodeType":"YulFunctionCall","src":"4362:23:7"},"nodeType":"YulIf","src":"4359:120:7"}]},"name":"return_data_selector","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"sig","nodeType":"YulTypedName","src":"4341:3:7","type":""}],"src":"4306:179:7"},{"body":{"nodeType":"YulBlock","src":"4537:684:7","statements":[{"body":{"nodeType":"YulBlock","src":"4577:9:7","statements":[{"nodeType":"YulLeave","src":"4579:5:7"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4553:14:7"},"nodeType":"YulFunctionCall","src":"4553:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"4571:4:7","type":"","value":"0x44"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4550:2:7"},"nodeType":"YulFunctionCall","src":"4550:26:7"},"nodeType":"YulIf","src":"4547:39:7"},{"nodeType":"YulVariableDeclaration","src":"4595:21:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4613:2:7","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4607:5:7"},"nodeType":"YulFunctionCall","src":"4607:9:7"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"4599:4:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4625:76:7","value":{"kind":"number","nodeType":"YulLiteral","src":"4635:66:7","type":"","value":"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4629:2:7","type":""}]},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4725:4:7"},{"kind":"number","nodeType":"YulLiteral","src":"4731:1:7","type":"","value":"4"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4738:14:7"},"nodeType":"YulFunctionCall","src":"4738:16:7"},{"name":"_1","nodeType":"YulIdentifier","src":"4756:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4734:3:7"},"nodeType":"YulFunctionCall","src":"4734:25:7"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"4710:14:7"},"nodeType":"YulFunctionCall","src":"4710:50:7"},"nodeType":"YulExpressionStatement","src":"4710:50:7"},{"nodeType":"YulVariableDeclaration","src":"4769:25:7","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4789:4:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4783:5:7"},"nodeType":"YulFunctionCall","src":"4783:11:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4773:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4803:26:7","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4813:14:7"},"nodeType":"YulFunctionCall","src":"4813:16:7"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4807:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4838:28:7","value":{"kind":"number","nodeType":"YulLiteral","src":"4848:18:7","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4842:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"4924:9:7","statements":[{"nodeType":"YulLeave","src":"4926:5:7"}]},"condition":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4884:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"4892:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4881:2:7"},"nodeType":"YulFunctionCall","src":"4881:14:7"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4904:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"4912:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4900:3:7"},"nodeType":"YulFunctionCall","src":"4900:17:7"},{"name":"_2","nodeType":"YulIdentifier","src":"4919:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4897:2:7"},"nodeType":"YulFunctionCall","src":"4897:25:7"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4878:2:7"},"nodeType":"YulFunctionCall","src":"4878:45:7"},"nodeType":"YulIf","src":"4875:58:7"},{"nodeType":"YulVariableDeclaration","src":"4942:28:7","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4957:4:7"},{"name":"offset","nodeType":"YulIdentifier","src":"4963:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4953:3:7"},"nodeType":"YulFunctionCall","src":"4953:17:7"},"variables":[{"name":"msg","nodeType":"YulTypedName","src":"4946:3:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4979:24:7","value":{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"4999:3:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4993:5:7"},"nodeType":"YulFunctionCall","src":"4993:10:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4983:6:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"5030:9:7","statements":[{"nodeType":"YulLeave","src":"5032:5:7"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5018:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"5026:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5015:2:7"},"nodeType":"YulFunctionCall","src":"5015:14:7"},"nodeType":"YulIf","src":"5012:27:7"},{"body":{"nodeType":"YulBlock","src":"5121:9:7","statements":[{"nodeType":"YulLeave","src":"5123:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"5062:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"5067:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5058:3:7"},"nodeType":"YulFunctionCall","src":"5058:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"5076:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5054:3:7"},"nodeType":"YulFunctionCall","src":"5054:27:7"},{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5091:4:7"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"5097:14:7"},"nodeType":"YulFunctionCall","src":"5097:16:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5087:3:7"},"nodeType":"YulFunctionCall","src":"5087:27:7"},{"name":"_1","nodeType":"YulIdentifier","src":"5116:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5083:3:7"},"nodeType":"YulFunctionCall","src":"5083:36:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5051:2:7"},"nodeType":"YulFunctionCall","src":"5051:69:7"},"nodeType":"YulIf","src":"5048:82:7"},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5159:4:7"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5173:6:7"},{"name":"length","nodeType":"YulIdentifier","src":"5181:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:7"},"nodeType":"YulFunctionCall","src":"5169:19:7"},{"kind":"number","nodeType":"YulLiteral","src":"5190:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5165:3:7"},"nodeType":"YulFunctionCall","src":"5165:30:7"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5139:19:7"},"nodeType":"YulFunctionCall","src":"5139:57:7"},"nodeType":"YulExpressionStatement","src":"5139:57:7"},{"nodeType":"YulAssignment","src":"5205:10:7","value":{"name":"msg","nodeType":"YulIdentifier","src":"5212:3:7"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"5205:3:7"}]}]},"name":"try_decode_error_message","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"4529:3:7","type":""}],"src":"4490:731:7"}]},"contents":"{\n { }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let memPtr := mload(64)\n finalize_allocation(memPtr, add(and(add(_3, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 32))\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n value0 := memPtr\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_rational_10_by_1__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_rational_11_by_1__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"Error: a == b not satisfied [str\")\n mstore(add(headStart, 96), \"ing]\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 9)\n mstore(add(headStart, 96), \" Value a\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_string(value0, add(headStart, 128))\n }\n function abi_encode_tuple_t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 9)\n mstore(add(headStart, 96), \" Value b\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_string(value0, add(headStart, 128))\n }\n function copy_memory_to_memory(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length) { mstore(add(dst, length), 0) }\n }\n function finalize_allocation(memPtr, size)\n {\n let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function return_data_selector() -> sig\n {\n if gt(returndatasize(), 3)\n {\n returndatacopy(0, 0, 4)\n sig := shr(224, mload(0))\n }\n }\n function try_decode_error_message() -> ret\n {\n if lt(returndatasize(), 0x44) { leave }\n let data := mload(64)\n let _1 := 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc\n returndatacopy(data, 4, add(returndatasize(), _1))\n let offset := mload(data)\n let _2 := returndatasize()\n let _3 := 0xffffffffffffffff\n if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n let msg := add(data, offset)\n let length := mload(msg)\n if gt(length, _3) { leave }\n if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n finalize_allocation(data, add(add(offset, length), 0x20))\n ret := msg\n }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c8063a474cdb011610050578063a474cdb014610091578063ba414fa614610099578063fa7626d4146100bf57600080fd5b80630a9254e4146100775780632a11c35d146100815780638dc5d38014610089575b600080fd5b61007f6100cc565b005b61007f6102df565b61007f6104e1565b61007f610607565b6000546100ab90610100900460ff1681565b604051901515815260200160405180910390f35b6000546100ab9060ff1681565b6040516100d8906108cd565b604051809103906000f0801580156100f4573d6000803e3d6000fd5b50600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff93841681029190911791829055604051910490911690610153906108da565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801561018c573d6000803e3d6000fd5b50600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560005460405162010000909104909116906101e8906108da565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610221573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081529083166004820152620100009091049091169063f2fde38b90602401600060405180830381600087803b1580156102c557600080fd5b505af11580156102d9573d6000803e3d6000fd5b50505050565b6040517f1f7b4f30000000000000000000000000000000000000000000000000000000008152600a6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b15801561034557600080fd5b505af1158015610359573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0129d436040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103c757600080fd5b505af11580156103db573d6000803e3d6000fd5b505050506104df600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef690cc06040518163ffffffff1660e01b815260040160006040518083038186803b15801561044a57600080fd5b505afa15801561045e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104a491908101906108e7565b6040518060400160405280600281526020017f676d00000000000000000000000000000000000000000000000000000000000081525061074a565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0129d436040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561054b57600080fd5b505af192505050801561055c575060015b6105d657610568610b3e565b806308c379a014156105ca575061057d610b5a565b8061058857506105cc565b6105c7816040518060400160405280602081526020017f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525061074a565b50565b505b3d6000803e3d6000fd5b6104df600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6040517f1f7b4f30000000000000000000000000000000000000000000000000000000008152600b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631f7b4f3090602401600060405180830381600087803b15801561066d57600080fd5b505af1158015610681573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c0129d436040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106ef57600080fd5b505af1925050508015610700575060015b6105d65761070c610b3e565b806308c379a014156105ca5750610721610b5a565b8061072c57506105cc565b6105c78160405180606001604052806021815260200161191d602191395b8060405160200161075b91906109e7565b604051602081830303815290604052805190602001208260405160200161078291906109e7565b60405160208183030381529060405280519060200120146108c9577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516108229060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516108599190610a03565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516108909190610a51565b60405180910390a16108c9600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b5050565b61097c80610c0383390190565b61039e8061157f83390190565b6000602082840312156108f957600080fd5b815167ffffffffffffffff8082111561091157600080fd5b818401915084601f83011261092557600080fd5b81518181111561093757610937610b0f565b604051915061096e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183610ac4565b80825285602082850101111561098357600080fd5b610994816020840160208601610a98565b50949350505050565b600081518084526109b5816020860160208601610a98565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516109f9818460208701610a98565b9190910192915050565b60408152600960408201527f202056616c7565206100000000000000000000000000000000000000000000006060820152608060208201526000610a4a608083018461099d565b9392505050565b60408152600960408201527f202056616c7565206200000000000000000000000000000000000000000000006060820152608060208201526000610a4a608083018461099d565b60005b83811015610ab3578181015183820152602001610a9b565b838111156102d95750506000910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610b0857610b08610b0f565b6040525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115610b575760046000803e5060005160e01c5b90565b600060443d1015610b685790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715610bb657505050505090565b8285019150815181811115610bce5750505050505090565b843d8701016020828501011115610be85750505050505090565b610bf760208286010187610ac4565b50909594505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108fe8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033608060405234801561001057600080fd5b5060405161039e38038061039e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61030b806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a26469706673582212207e86e36fa543460096d0ce1f27b7239468336340c4a0df5e85d3096f5c47f21e64736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA474CDB0 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA474CDB0 EQ PUSH2 0x91 JUMPI DUP1 PUSH4 0xBA414FA6 EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9254E4 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2A11C35D EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x8DC5D380 EQ PUSH2 0x89 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xCC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x2DF JUMP JUMPDEST PUSH2 0x7F PUSH2 0x4E1 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x607 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAB SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAB SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP1 PUSH2 0x8CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF AND PUSH3 0x10000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x153 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x18C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x1E8 SWAP1 PUSH2 0x8DA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x221 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1F7B4F3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0xA PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x7109709ECFA91A80626FF3989D68F67F5B1DD12D SWAP1 PUSH4 0x1F7B4F30 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC0129D43 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4DF PUSH1 0x0 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEF690CC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4A4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x74A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC0129D43 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x55C JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x5D6 JUMPI PUSH2 0x568 PUSH2 0xB3E JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x5CA JUMPI POP PUSH2 0x57D PUSH2 0xB5A JUMP JUMPDEST DUP1 PUSH2 0x588 JUMPI POP PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH2 0x74A JUMP JUMPDEST POP JUMP JUMPDEST POP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4DF PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1F7B4F3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0xB PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x7109709ECFA91A80626FF3989D68F67F5B1DD12D SWAP1 PUSH4 0x1F7B4F30 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x681 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC0129D43 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x700 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x5D6 JUMPI PUSH2 0x70C PUSH2 0xB3E JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x5CA JUMPI POP PUSH2 0x721 PUSH2 0xB5A JUMP JUMPDEST DUP1 PUSH2 0x72C JUMPI POP PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x191D PUSH1 0x21 SWAP2 CODECOPY JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x9E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x782 SWAP2 SWAP1 PUSH2 0x9E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x8C9 JUMPI PUSH32 0x41304FACD9323D75B11BCDD609CB38EFFFFDB05710F7CAF0E9B16C6D9D709F50 PUSH1 0x40 MLOAD PUSH2 0x822 SWAP1 PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4572726F723A2061203D3D2062206E6F7420736174697366696564205B737472 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E675D00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP3 PUSH1 0x40 MLOAD PUSH2 0x859 SWAP2 SWAP1 PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP2 PUSH1 0x40 MLOAD PUSH2 0x890 SWAP2 SWAP1 PUSH2 0xA51 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x8C9 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C DUP1 PUSH2 0xC03 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0x157F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 POP PUSH2 0x96E PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0xAC4 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x994 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA98 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x9B5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x9F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA98 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520610000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA4A PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x99D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520620000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA4A PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x99D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAB3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA9B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2D9 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xB08 JUMPI PUSH2 0xB08 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0xB57 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0xB68 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP1 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0xBB6 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xBCE JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBE8 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xBF7 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xAC4 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x8FE DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x39E CODESIZE SUB DUP1 PUSH2 0x39E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30B DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033696E76 PUSH2 0x6C69 PUSH5 0x20626C6F63 PUSH12 0x206E756D6265722C20706C65 PUSH2 0x7365 KECCAK256 PUSH24 0x616974A26469706673582212207E86E36FA543460096D0CE 0x1F 0x27 0xB7 0x23 SWAP5 PUSH9 0x336340C4A0DF5E85D3 MULMOD PUSH16 0x5C47F21E64736F6C6343000807003300 ","sourceMap":"629:588:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:209:5;;;:::i;:::-;;662:139:4;;;:::i;1026:189::-;;;:::i;807:213::-;;;:::i;1605:18:0:-;;;;;;;;;;;;;;;1817:14:7;;1810:22;1792:41;;1780:2;1765:18;1605::0;;;;;;;1573:26;;;;;;;;;619:209:5;671:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;661:7:5;:23;;;;;;;;;;;;;;;;;;;702:26;;719:7;;;;;;702:26;;;:::i;:::-;1597:42:7;1585:55;;;1567:74;;1555:2;1540:18;702:26:5;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;694:5:5;:34;;;;;;;;;;;-1:-1:-1;761:7:5;744:26;;761:7;;;;;;;;744:26;;;:::i;:::-;1597:42:7;1585:55;;;1567:74;;1555:2;1540:18;744:26:5;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;738:3:5;:32;;;;;;;;;;;-1:-1:-1;780:7:5;-1:-1:-1;814:5:5;780:41;;;;;814:5;;;780:41;;;1567:74:7;780:7:5;;;;;;;;:25;;1540:18:7;;780:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:209::o;662:139:4:-;717:13;;;;;727:2;717:13;;;1999:25:7;1670:64:0;;717:9:4;;1972:18:7;;717:13:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:5;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;760:34;769:7;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;760:34;;;;;;;;;;;;;;;;;:8;:34::i;:::-;662:139::o;1026:189::-;1079:3;;;;;;;;;;;:6;;;:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1075:134;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;1147:51;1156:5;1147:51;;;;;;;;;;;;;;;;;:8;:51::i;:::-;1100:109;662:139::o;1075:134::-;;;;;;;;;;;1090:6;1853::0;:13;;;;;;;;1818:55;807:213:4;864:13;;;;;874:2;864:13;;;1999:25:7;1670:64:0;;864:9:4;;1972:18:7;;864:13:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;891:5;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;887:127;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;961:42;970:5;977:25;;;;;;;;;;;;;;;;;13479:342:0;13615:1;13598:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;13588:30;;;;;;13581:1;13564:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;13554:30;;;;;;:64;13550:265;;13639:43;;;;;2428:2:7;2410:21;;;2467:2;2447:18;;;2440:30;2506:34;2501:2;2486:18;;2479:62;2577:6;2572:2;2557:18;;2550:34;2616:3;2601:19;;2226:400;13639:43:0;;;;;;;;13701:32;13731:1;13701:32;;;;;;:::i;:::-;;;;;;;;13752;13782:1;13752:32;;;;;;:::i;:::-;;;;;;;;13798:6;1853;:13;;;;;;;;1818:55;13798:6;13479:342;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:799:7:-;94:6;147:2;135:9;126:7;122:23;118:32;115:52;;;163:1;160;153:12;115:52;196:9;190:16;225:18;266:2;258:6;255:14;252:34;;;282:1;279;272:12;252:34;320:6;309:9;305:22;295:32;;365:7;358:4;354:2;350:13;346:27;336:55;;387:1;384;377:12;336:55;416:2;410:9;438:2;434;431:10;428:36;;;444:18;;:::i;:::-;493:2;487:9;473:23;;505:124;625:2;556:66;549:4;545:2;541:13;537:86;533:95;525:6;505:124;:::i;:::-;653:2;645:6;638:18;693:7;688:2;683;679;675:11;671:20;668:33;665:53;;;714:1;711;704:12;665:53;727:55;779:2;774;766:6;762:15;757:2;753;749:11;727:55;:::i;:::-;-1:-1:-1;801:6:7;14:799;-1:-1:-1;;;;14:799:7:o;818:317::-;860:3;898:5;892:12;925:6;920:3;913:19;941:63;997:6;990:4;985:3;981:14;974:4;967:5;963:16;941:63;:::i;:::-;1049:2;1037:15;1054:66;1033:88;1024:98;;;;1124:4;1020:109;;818:317;-1:-1:-1;;818:317:7:o;1140:276::-;1271:3;1309:6;1303:13;1325:53;1371:6;1366:3;1359:4;1351:6;1347:17;1325:53;:::i;:::-;1394:16;;;;;1140:276;-1:-1:-1;;1140:276:7:o;2631:450::-;2881:2;2870:9;2863:21;2920:1;2915:2;2904:9;2900:18;2893:29;2958:11;2953:2;2942:9;2938:18;2931:39;3008:3;3001:4;2990:9;2986:20;2979:33;2844:4;3029:46;3070:3;3059:9;3055:19;3047:6;3029:46;:::i;:::-;3021:54;2631:450;-1:-1:-1;;;2631:450:7:o;3086:::-;3336:2;3325:9;3318:21;3375:1;3370:2;3359:9;3355:18;3348:29;3413:11;3408:2;3397:9;3393:18;3386:39;3463:3;3456:4;3445:9;3441:20;3434:33;3299:4;3484:46;3525:3;3514:9;3510:19;3502:6;3484:46;:::i;3541:258::-;3613:1;3623:113;3637:6;3634:1;3631:13;3623:113;;;3713:11;;;3707:18;3694:11;;;3687:39;3659:2;3652:10;3623:113;;;3754:6;3751:1;3748:13;3745:48;;;-1:-1:-1;;3789:1:7;3771:16;;3764:27;3541:258::o;3804:308::-;3910:66;3905:2;3899:4;3895:13;3891:86;3883:6;3879:99;4044:6;4032:10;4029:22;4008:18;3996:10;3993:34;3990:62;3987:88;;;4055:18;;:::i;:::-;4091:2;4084:22;-1:-1:-1;;3804:308:7:o;4117:184::-;4169:77;4166:1;4159:88;4266:4;4263:1;4256:15;4290:4;4287:1;4280:15;4306:179;4341:3;4383:1;4365:16;4362:23;4359:120;;;4429:1;4426;4423;4408:23;-1:-1:-1;4466:1:7;4460:8;4455:3;4451:18;4359:120;4306:179;:::o;4490:731::-;4529:3;4571:4;4553:16;4550:26;4547:39;;;4490:731;:::o;4547:39::-;4613:2;4607:9;4635:66;4756:2;4738:16;4734:25;4731:1;4725:4;4710:50;4789:4;4783:11;4813:16;4848:18;4919:2;4912:4;4904:6;4900:17;4897:25;4892:2;4884:6;4881:14;4878:45;4875:58;;;4926:5;;;;;4490:731;:::o;4875:58::-;4963:6;4957:4;4953:17;4942:28;;4999:3;4993:10;5026:2;5018:6;5015:14;5012:27;;;5032:5;;;;;;4490:731;:::o;5012:27::-;5116:2;5097:16;5091:4;5087:27;5083:36;5076:4;5067:6;5062:3;5058:16;5054:27;5051:69;5048:82;;;5123:5;;;;;;4490:731;:::o;5048:82::-;5139:57;5190:4;5181:6;5173;5169:19;5165:30;5159:4;5139:57;:::i;:::-;-1:-1:-1;5212:3:7;;4490:731;-1:-1:-1;;;;;4490:731:7:o"}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonOwnerCannotGm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerCanGmOnGoodBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerCannotGmOnBadBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/Greeter.t.sol\":\"Gm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/ds-test/src/test.sol\":{\"keccak256\":\"0x529f30c5939d75689f6a982f7f96b8898bed30bd90ec5b385b57cab681e12b00\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://89075d5a96e87acef1d00cf556b409d1836728ec2e92f5629ceb5cae3d1e4354\",\"dweb:/ipfs/QmPAViJrxffEDns9GEMVSAzmr3soAzfrEg1CVuovwmNfnt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"src/Greeter.sol\":{\"keccak256\":\"0xc34bd8409a4fa4a474f29c6cb7d076cf9379c9c79e257c5cda7e5d114023f0f6\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://9db4f0c61754c54fd3b3ae58dfaf72865f8134e96959f7fc295b1a8e3b7511d7\",\"dweb:/ipfs/QmPuGbtNJ9rRaC7kFWqy76A9sfcGGcYAps6yPRrW28v4xd\"]},\"src/test/Greeter.t.sol\":{\"keccak256\":\"0xf7fe97110b31611de26973a826978b120cf08bb9263444bf52ea639f3f568c16\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://139a8edf691557963f5e6d3925f0f3fdf14c211974bbc399b81c5326f6c9f5ec\",\"dweb:/ipfs/QmVBNcpL91o99MkuDS9Qu5kHe68NPLyphtf3yJTYfCn1oC\"]},\"src/test/utils/GreeterTest.sol\":{\"keccak256\":\"0xc49253ed5e0fc9185d066993945370493f2bb08f00a997680b112fe6f9b5d455\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://d5ff89c2bb371b6ddfb66b905b3c3597aa080e1ca5c1c1303e529f2c8fc98a67\",\"dweb:/ipfs/Qmc28bfatf99DDv6P8dpdo5Zsw7QdSoC1N4FV1TJGZF5Vx\"]},\"src/test/utils/Hevm.sol\":{\"keccak256\":\"0xd477fc888e2bdbaf45c8babf175c93127478ae74543556ffebb9877a8dd823a9\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://7fb2a52878484cea3793a92ae34b3a9f3e77f976eda7c7f91e2edb5b9ba38be3\",\"dweb:/ipfs/Qmf7JsG4uMjd7WX1h8rBPcpXv1m4mF3sdrr6VYzKj1SXUX\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":532,"contract":"src/test/Greeter.t.sol:Gm","label":"IS_TEST","offset":0,"slot":"0","type":"t_bool"},{"astId":534,"contract":"src/test/Greeter.t.sol:Gm","label":"failed","offset":1,"slot":"0","type":"t_bool"},{"astId":260,"contract":"src/test/Greeter.t.sol:Gm","label":"greeter","offset":2,"slot":"0","type":"t_contract(Greeter)60"},{"astId":263,"contract":"src/test/Greeter.t.sol:Gm","label":"alice","offset":0,"slot":"1","type":"t_contract(User)249"},{"astId":266,"contract":"src/test/Greeter.t.sol:Gm","label":"bob","offset":0,"slot":"2","type":"t_contract(User)249"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(Greeter)60":{"encoding":"inplace","label":"contract Greeter","numberOfBytes":"20"},"t_contract(User)249":{"encoding":"inplace","label":"contract User","numberOfBytes":"20"}}}},"Greet":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"log_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"log_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"","type":"bytes32"}],"name":"log_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"","type":"int256"}],"name":"log_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"address","name":"val","type":"address"}],"name":"log_named_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes","name":"val","type":"bytes"}],"name":"log_named_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes32","name":"val","type":"bytes32"}],"name":"log_named_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"}],"name":"log_named_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"string","name":"val","type":"string"}],"name":"log_named_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"}],"name":"log_named_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"log_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"logs","type":"event"},{"inputs":[],"name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setUp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testCanSetGreeting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testCannotGm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"greeting","type":"string"}],"name":"testWorksForAllGreetings","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60806040526000805460ff1916600117905534801561001d57600080fd5b506119f48061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ba414fa611610050578063ba414fa61461009c578063e0747015146100c2578063fa7626d4146100ca57600080fd5b80630a9254e4146100775780635306d34d146100815780636721f71814610089575b600080fd5b61007f6100d7565b005b61007f6102ea565b61007f6100973660046108de565b610441565b6000546100ae90610100900460ff1681565b604051901515815260200160405180910390f35b61007f610594565b6000546100ae9060ff1681565b6040516100e3906108c4565b604051809103906000f0801580156100ff573d6000803e3d6000fd5b50600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905560405191049091169061015e906108d1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610197573d6000803e3d6000fd5b50600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560005460405162010000909104909116906101f3906108d1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801561022c573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081529083166004820152620100009091049091169063f2fde38b90602401600060405180830381600087803b1580156102d057600080fd5b505af11580156102e4573d6000803e3d6000fd5b50505050565b6001546040517fead710c400000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f676d000000000000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c490606401600060405180830381600087803b15801561038357600080fd5b505af1925050508015610394575060015b61040e576103a0610be0565b806308c379a0141561040257506103b5610bfc565b806103c05750610404565b6103ff816040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d000000000000000000000000815250610741565b50565b505b3d6000803e3d6000fd5b61043f600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b565b6001546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c490610497908490600401610a4c565b600060405180830381600087803b1580156104b157600080fd5b505af11580156104c5573d6000803e3d6000fd5b505050506103ff600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef690cc06040518163ffffffff1660e01b815260040160006040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261058e9190810190610964565b82610741565b6001546040517fead710c400000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f6869000000000000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c490606401600060405180830381600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b5050505061043f600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef690cc06040518163ffffffff1660e01b815260040160006040518083038186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261070a9190810190610964565b6040518060400160405280600281526020017f68690000000000000000000000000000000000000000000000000000000000008152505b806040516020016107529190610a30565b60405160208183030381529060405280519060200120826040516020016107799190610a30565b60405160208183030381529060405280519060200120146108c0577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516108199060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516108509190610a66565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516108879190610aad565b60405180910390a16108c0600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b5050565b61097c80610ca583390190565b61039e8061162183390190565b6000602082840312156108f057600080fd5b813567ffffffffffffffff81111561090757600080fd5b8201601f8101841361091857600080fd5b803561092381610af4565b6040516109308282610b66565b82815286602084860101111561094557600080fd5b8260208501602083013760009281016020019290925250949350505050565b60006020828403121561097657600080fd5b815167ffffffffffffffff81111561098d57600080fd5b8201601f8101841361099e57600080fd5b80516109a981610af4565b6040516109b68282610b66565b8281528660208486010111156109cb57600080fd5b6109dc836020830160208701610b3a565b9695505050505050565b600081518084526109fe816020860160208601610b3a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251610a42818460208701610b3a565b9190910192915050565b602081526000610a5f60208301846109e6565b9392505050565b60408152600960408201527f202056616c7565206100000000000000000000000000000000000000000000006060820152608060208201526000610a5f60808301846109e6565b60408152600960408201527f202056616c7565206200000000000000000000000000000000000000000000006060820152608060208201526000610a5f60808301846109e6565b600067ffffffffffffffff821115610b0e57610b0e610bb1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015610b55578181015183820152602001610b3d565b838111156102e45750506000910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610baa57610baa610bb1565b6040525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115610bf95760046000803e5060005160e01c5b90565b600060443d1015610c0a5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715610c5857505050505090565b8285019150815181811115610c705750505050505090565b843d8701016020828501011115610c8a5750505050505090565b610c9960208286010187610b66565b50909594505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108fe8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033608060405234801561001057600080fd5b5060405161039e38038061039e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61030b806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033a2646970667358221220ad80bd62f261460562ca174ee1c98c204fef7777d1d6f8bacae87697631df73c64736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F4 DUP1 PUSH2 0x2D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBA414FA6 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xBA414FA6 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xE0747015 EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9254E4 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x5306D34D EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x6721F718 EQ PUSH2 0x89 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x2EA JUMP JUMPDEST PUSH2 0x7F PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x8DE JUMP JUMPDEST PUSH2 0x441 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAE SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x594 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAE SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP1 PUSH2 0x8C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF AND PUSH3 0x10000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x15E SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x197 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x1F3 SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x22C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x394 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x40E JUMPI PUSH2 0x3A0 PUSH2 0xBE0 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x402 JUMPI POP PUSH2 0x3B5 PUSH2 0xBFC JUMP JUMPDEST DUP1 PUSH2 0x3C0 JUMPI POP PUSH2 0x404 JUMP JUMPDEST PUSH2 0x3FF DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP PUSH2 0x741 JUMP JUMPDEST POP JUMP JUMPDEST POP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x497 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0xA4C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3FF PUSH1 0x0 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEF690CC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x58E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x964 JUMP JUMPDEST DUP3 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6869000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x641 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x43F PUSH1 0x0 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEF690CC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x70A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x964 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6869000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x752 SWAP2 SWAP1 PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x779 SWAP2 SWAP1 PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x8C0 JUMPI PUSH32 0x41304FACD9323D75B11BCDD609CB38EFFFFDB05710F7CAF0E9B16C6D9D709F50 PUSH1 0x40 MLOAD PUSH2 0x819 SWAP1 PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4572726F723A2061203D3D2062206E6F7420736174697366696564205B737472 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E675D00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP3 PUSH1 0x40 MLOAD PUSH2 0x850 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP2 PUSH1 0x40 MLOAD PUSH2 0x887 SWAP2 SWAP1 PUSH2 0xAAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x8C0 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C DUP1 PUSH2 0xCA5 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0x1621 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x923 DUP2 PUSH2 0xAF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x930 DUP3 DUP3 PUSH2 0xB66 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP7 PUSH1 0x20 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x98D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x9A9 DUP2 PUSH2 0xAF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9B6 DUP3 DUP3 PUSH2 0xB66 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP7 PUSH1 0x20 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x9CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9DC DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xB3A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x9FE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xB3A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xA42 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xB3A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA5F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x9E6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520610000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA5F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x9E6 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520620000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA5F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x9E6 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB0E JUMPI PUSH2 0xB0E PUSH2 0xBB1 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB55 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB3D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xBAA JUMPI PUSH2 0xBAA PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0xC0A JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP1 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0xC58 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xC70 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xC8A JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xC99 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xB66 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x8FE DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x39E CODESIZE SUB DUP1 PUSH2 0x39E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30B DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033A26469 PUSH17 0x667358221220AD80BD62F261460562CA17 0x4E 0xE1 0xC9 DUP13 KECCAK256 0x4F 0xEF PUSH24 0x77D1D6F8BACAE87697631DF73C64736F6C63430008070033 ","sourceMap":"139:488:4:-:0;;;1573:26:0;;;-1:-1:-1;;1573:26:0;1595:4;1573:26;;;139:488:4;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@IS_TEST_532":{"entryPoint":null,"id":532,"parameterSlots":0,"returnSlots":0},"@assertEq_1977":{"entryPoint":1857,"id":1977,"parameterSlots":2,"returnSlots":0},"@fail_569":{"entryPoint":null,"id":569,"parameterSlots":0,"returnSlots":0},"@failed_534":{"entryPoint":null,"id":534,"parameterSlots":0,"returnSlots":0},"@setUp_308":{"entryPoint":215,"id":308,"parameterSlots":0,"returnSlots":0},"@testCanSetGreeting_109":{"entryPoint":1428,"id":109,"parameterSlots":0,"returnSlots":0},"@testCannotGm_92":{"entryPoint":746,"id":92,"parameterSlots":0,"returnSlots":0},"@testWorksForAllGreetings_128":{"entryPoint":1089,"id":128,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_string_memory_ptr":{"entryPoint":2270,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptr_fromMemory":{"entryPoint":2404,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":2534,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2608,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2636,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7624778dedc75f8b322b9fa1632a610d40b85e106c7d9bf0e743a9ce291b9c6f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2662,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2733,"id":null,"parameterSlots":2,"returnSlots":1},"array_allocation_size_string":{"entryPoint":2804,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":2874,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":2918,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x41":{"entryPoint":2993,"id":null,"parameterSlots":0,"returnSlots":0},"return_data_selector":{"entryPoint":3040,"id":null,"parameterSlots":0,"returnSlots":1},"try_decode_error_message":{"entryPoint":3068,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6603:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"94:649:7","statements":[{"body":{"nodeType":"YulBlock","src":"140:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"149:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"152:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"142:6:7"},"nodeType":"YulFunctionCall","src":"142:12:7"},"nodeType":"YulExpressionStatement","src":"142:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"115:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"124:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"111:3:7"},"nodeType":"YulFunctionCall","src":"111:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"136:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"107:3:7"},"nodeType":"YulFunctionCall","src":"107:32:7"},"nodeType":"YulIf","src":"104:52:7"},{"nodeType":"YulVariableDeclaration","src":"165:37:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"192:9:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"179:12:7"},"nodeType":"YulFunctionCall","src":"179:23:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"169:6:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"245:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"254:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"257:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"247:6:7"},"nodeType":"YulFunctionCall","src":"247:12:7"},"nodeType":"YulExpressionStatement","src":"247:12:7"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"217:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"225:18:7","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"214:2:7"},"nodeType":"YulFunctionCall","src":"214:30:7"},"nodeType":"YulIf","src":"211:50:7"},{"nodeType":"YulVariableDeclaration","src":"270:32:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"284:9:7"},{"name":"offset","nodeType":"YulIdentifier","src":"295:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"280:3:7"},"nodeType":"YulFunctionCall","src":"280:22:7"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"274:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"350:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"359:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"362:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"352:6:7"},"nodeType":"YulFunctionCall","src":"352:12:7"},"nodeType":"YulExpressionStatement","src":"352:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"329:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"333:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"325:3:7"},"nodeType":"YulFunctionCall","src":"325:13:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"340:7:7"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"321:3:7"},"nodeType":"YulFunctionCall","src":"321:27:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"314:6:7"},"nodeType":"YulFunctionCall","src":"314:35:7"},"nodeType":"YulIf","src":"311:55:7"},{"nodeType":"YulVariableDeclaration","src":"375:26:7","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"398:2:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"385:12:7"},"nodeType":"YulFunctionCall","src":"385:16:7"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"379:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"410:42:7","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"449:2:7"}],"functionName":{"name":"array_allocation_size_string","nodeType":"YulIdentifier","src":"420:28:7"},"nodeType":"YulFunctionCall","src":"420:32:7"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"414:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"461:23:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"481:2:7","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"475:5:7"},"nodeType":"YulFunctionCall","src":"475:9:7"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"465:6:7","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"513:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"521:2:7"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"493:19:7"},"nodeType":"YulFunctionCall","src":"493:31:7"},"nodeType":"YulExpressionStatement","src":"493:31:7"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"540:6:7"},{"name":"_2","nodeType":"YulIdentifier","src":"548:2:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"533:6:7"},"nodeType":"YulFunctionCall","src":"533:18:7"},"nodeType":"YulExpressionStatement","src":"533:18:7"},{"body":{"nodeType":"YulBlock","src":"597:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"606:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"609:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"599:6:7"},"nodeType":"YulFunctionCall","src":"599:12:7"},"nodeType":"YulExpressionStatement","src":"599:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"574:2:7"},{"name":"_2","nodeType":"YulIdentifier","src":"578:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"570:3:7"},"nodeType":"YulFunctionCall","src":"570:11:7"},{"kind":"number","nodeType":"YulLiteral","src":"583:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"566:3:7"},"nodeType":"YulFunctionCall","src":"566:20:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"588:7:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"563:2:7"},"nodeType":"YulFunctionCall","src":"563:33:7"},"nodeType":"YulIf","src":"560:53:7"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"639:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"647:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"635:3:7"},"nodeType":"YulFunctionCall","src":"635:15:7"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"656:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"660:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:7"},"nodeType":"YulFunctionCall","src":"652:11:7"},{"name":"_2","nodeType":"YulIdentifier","src":"665:2:7"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"622:12:7"},"nodeType":"YulFunctionCall","src":"622:46:7"},"nodeType":"YulExpressionStatement","src":"622:46:7"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"692:6:7"},{"name":"_2","nodeType":"YulIdentifier","src":"700:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"688:3:7"},"nodeType":"YulFunctionCall","src":"688:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"705:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"684:3:7"},"nodeType":"YulFunctionCall","src":"684:24:7"},{"kind":"number","nodeType":"YulLiteral","src":"710:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"677:6:7"},"nodeType":"YulFunctionCall","src":"677:35:7"},"nodeType":"YulExpressionStatement","src":"677:35:7"},{"nodeType":"YulAssignment","src":"721:16:7","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"731:6:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"721:6:7"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"60:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"71:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"83:6:7","type":""}],"src":"14:729:7"},{"body":{"nodeType":"YulBlock","src":"839:600:7","statements":[{"body":{"nodeType":"YulBlock","src":"885:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"894:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"897:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"887:6:7"},"nodeType":"YulFunctionCall","src":"887:12:7"},"nodeType":"YulExpressionStatement","src":"887:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"860:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"869:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"856:3:7"},"nodeType":"YulFunctionCall","src":"856:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"881:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"852:3:7"},"nodeType":"YulFunctionCall","src":"852:32:7"},"nodeType":"YulIf","src":"849:52:7"},{"nodeType":"YulVariableDeclaration","src":"910:30:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"930:9:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"924:5:7"},"nodeType":"YulFunctionCall","src":"924:16:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"983:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"992:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"995:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"985:6:7"},"nodeType":"YulFunctionCall","src":"985:12:7"},"nodeType":"YulExpressionStatement","src":"985:12:7"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"955:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"963:18:7","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"952:2:7"},"nodeType":"YulFunctionCall","src":"952:30:7"},"nodeType":"YulIf","src":"949:50:7"},{"nodeType":"YulVariableDeclaration","src":"1008:32:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1022:9:7"},{"name":"offset","nodeType":"YulIdentifier","src":"1033:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1018:3:7"},"nodeType":"YulFunctionCall","src":"1018:22:7"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1012:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"1088:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1097:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1100:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1090:6:7"},"nodeType":"YulFunctionCall","src":"1090:12:7"},"nodeType":"YulExpressionStatement","src":"1090:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1067:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"1071:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1063:3:7"},"nodeType":"YulFunctionCall","src":"1063:13:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1078:7:7"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1059:3:7"},"nodeType":"YulFunctionCall","src":"1059:27:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1052:6:7"},"nodeType":"YulFunctionCall","src":"1052:35:7"},"nodeType":"YulIf","src":"1049:55:7"},{"nodeType":"YulVariableDeclaration","src":"1113:19:7","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1129:2:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1123:5:7"},"nodeType":"YulFunctionCall","src":"1123:9:7"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1117:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1141:42:7","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1180:2:7"}],"functionName":{"name":"array_allocation_size_string","nodeType":"YulIdentifier","src":"1151:28:7"},"nodeType":"YulFunctionCall","src":"1151:32:7"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1145:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1192:23:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1212:2:7","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1206:5:7"},"nodeType":"YulFunctionCall","src":"1206:9:7"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1196:6:7","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1244:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"1252:2:7"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1224:19:7"},"nodeType":"YulFunctionCall","src":"1224:31:7"},"nodeType":"YulExpressionStatement","src":"1224:31:7"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:7"},{"name":"_2","nodeType":"YulIdentifier","src":"1279:2:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1264:6:7"},"nodeType":"YulFunctionCall","src":"1264:18:7"},"nodeType":"YulExpressionStatement","src":"1264:18:7"},{"body":{"nodeType":"YulBlock","src":"1328:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1337:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1340:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1330:6:7"},"nodeType":"YulFunctionCall","src":"1330:12:7"},"nodeType":"YulExpressionStatement","src":"1330:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1305:2:7"},{"name":"_2","nodeType":"YulIdentifier","src":"1309:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1301:3:7"},"nodeType":"YulFunctionCall","src":"1301:11:7"},{"kind":"number","nodeType":"YulLiteral","src":"1314:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1297:3:7"},"nodeType":"YulFunctionCall","src":"1297:20:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1319:7:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1294:2:7"},"nodeType":"YulFunctionCall","src":"1294:33:7"},"nodeType":"YulIf","src":"1291:53:7"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1379:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"1383:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1375:3:7"},"nodeType":"YulFunctionCall","src":"1375:11:7"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1392:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1400:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1388:3:7"},"nodeType":"YulFunctionCall","src":"1388:15:7"},{"name":"_2","nodeType":"YulIdentifier","src":"1405:2:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1353:21:7"},"nodeType":"YulFunctionCall","src":"1353:55:7"},"nodeType":"YulExpressionStatement","src":"1353:55:7"},{"nodeType":"YulAssignment","src":"1417:16:7","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1427:6:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1417:6:7"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"805:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"816:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"828:6:7","type":""}],"src":"748:691:7"},{"body":{"nodeType":"YulBlock","src":"1494:267:7","statements":[{"nodeType":"YulVariableDeclaration","src":"1504:26:7","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1524:5:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1518:5:7"},"nodeType":"YulFunctionCall","src":"1518:12:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1508:6:7","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1546:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"1551:6:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1539:6:7"},"nodeType":"YulFunctionCall","src":"1539:19:7"},"nodeType":"YulExpressionStatement","src":"1539:19:7"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1593:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"1600:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1589:3:7"},"nodeType":"YulFunctionCall","src":"1589:16:7"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1611:3:7"},{"kind":"number","nodeType":"YulLiteral","src":"1616:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1607:3:7"},"nodeType":"YulFunctionCall","src":"1607:14:7"},{"name":"length","nodeType":"YulIdentifier","src":"1623:6:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1567:21:7"},"nodeType":"YulFunctionCall","src":"1567:63:7"},"nodeType":"YulExpressionStatement","src":"1567:63:7"},{"nodeType":"YulAssignment","src":"1639:116:7","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1654:3:7"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1667:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1675:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1663:3:7"},"nodeType":"YulFunctionCall","src":"1663:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"1680:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1659:3:7"},"nodeType":"YulFunctionCall","src":"1659:88:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1650:3:7"},"nodeType":"YulFunctionCall","src":"1650:98:7"},{"kind":"number","nodeType":"YulLiteral","src":"1750:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1646:3:7"},"nodeType":"YulFunctionCall","src":"1646:109:7"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1639:3:7"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1471:5:7","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1478:3:7","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1486:3:7","type":""}],"src":"1444:317:7"},{"body":{"nodeType":"YulBlock","src":"1905:137:7","statements":[{"nodeType":"YulVariableDeclaration","src":"1915:27:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1935:6:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1929:5:7"},"nodeType":"YulFunctionCall","src":"1929:13:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1919:6:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1977:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1985:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1973:3:7"},"nodeType":"YulFunctionCall","src":"1973:17:7"},{"name":"pos","nodeType":"YulIdentifier","src":"1992:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"1997:6:7"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1951:21:7"},"nodeType":"YulFunctionCall","src":"1951:53:7"},"nodeType":"YulExpressionStatement","src":"1951:53:7"},{"nodeType":"YulAssignment","src":"2013:23:7","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2024:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"2029:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2020:3:7"},"nodeType":"YulFunctionCall","src":"2020:16:7"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2013:3:7"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1881:3:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1886:6:7","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1897:3:7","type":""}],"src":"1766:276:7"},{"body":{"nodeType":"YulBlock","src":"2148:125:7","statements":[{"nodeType":"YulAssignment","src":"2158:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2170:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2181:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2166:3:7"},"nodeType":"YulFunctionCall","src":"2166:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2158:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2200:9:7"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2215:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"2223:42:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2211:3:7"},"nodeType":"YulFunctionCall","src":"2211:55:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2193:6:7"},"nodeType":"YulFunctionCall","src":"2193:74:7"},"nodeType":"YulExpressionStatement","src":"2193:74:7"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2117:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2128:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2139:4:7","type":""}],"src":"2047:226:7"},{"body":{"nodeType":"YulBlock","src":"2373:92:7","statements":[{"nodeType":"YulAssignment","src":"2383:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2395:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2406:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2391:3:7"},"nodeType":"YulFunctionCall","src":"2391:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2383:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2425:9:7"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2450:6:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2443:6:7"},"nodeType":"YulFunctionCall","src":"2443:14:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2436:6:7"},"nodeType":"YulFunctionCall","src":"2436:22:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2418:6:7"},"nodeType":"YulFunctionCall","src":"2418:41:7"},"nodeType":"YulExpressionStatement","src":"2418:41:7"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2342:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2353:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2364:4:7","type":""}],"src":"2278:187:7"},{"body":{"nodeType":"YulBlock","src":"2591:99:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2608:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2619:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2601:6:7"},"nodeType":"YulFunctionCall","src":"2601:21:7"},"nodeType":"YulExpressionStatement","src":"2601:21:7"},{"nodeType":"YulAssignment","src":"2631:53:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2657:6:7"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2669:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2680:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2665:3:7"},"nodeType":"YulFunctionCall","src":"2665:18:7"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"2639:17:7"},"nodeType":"YulFunctionCall","src":"2639:45:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2631:4:7"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2560:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2571:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2582:4:7","type":""}],"src":"2470:220:7"},{"body":{"nodeType":"YulBlock","src":"2869:226:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2886:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2897:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2879:6:7"},"nodeType":"YulFunctionCall","src":"2879:21:7"},"nodeType":"YulExpressionStatement","src":"2879:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2920:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2931:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2916:3:7"},"nodeType":"YulFunctionCall","src":"2916:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"2936:2:7","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2909:6:7"},"nodeType":"YulFunctionCall","src":"2909:30:7"},"nodeType":"YulExpressionStatement","src":"2909:30:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2959:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2970:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2955:3:7"},"nodeType":"YulFunctionCall","src":"2955:18:7"},{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472","kind":"string","nodeType":"YulLiteral","src":"2975:34:7","type":"","value":"Error: a == b not satisfied [str"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2948:6:7"},"nodeType":"YulFunctionCall","src":"2948:62:7"},"nodeType":"YulExpressionStatement","src":"2948:62:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3030:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3041:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3026:3:7"},"nodeType":"YulFunctionCall","src":"3026:18:7"},{"hexValue":"696e675d","kind":"string","nodeType":"YulLiteral","src":"3046:6:7","type":"","value":"ing]"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3019:6:7"},"nodeType":"YulFunctionCall","src":"3019:34:7"},"nodeType":"YulExpressionStatement","src":"3019:34:7"},{"nodeType":"YulAssignment","src":"3062:27:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3074:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3085:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3070:3:7"},"nodeType":"YulFunctionCall","src":"3070:19:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3062:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2846:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2860:4:7","type":""}],"src":"2695:400:7"},{"body":{"nodeType":"YulBlock","src":"3274:151:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3291:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3302:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3284:6:7"},"nodeType":"YulFunctionCall","src":"3284:21:7"},"nodeType":"YulExpressionStatement","src":"3284:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3325:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3336:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3321:3:7"},"nodeType":"YulFunctionCall","src":"3321:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"3341:1:7","type":"","value":"2"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3314:6:7"},"nodeType":"YulFunctionCall","src":"3314:29:7"},"nodeType":"YulExpressionStatement","src":"3314:29:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3363:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3374:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3359:3:7"},"nodeType":"YulFunctionCall","src":"3359:18:7"},{"hexValue":"676d","kind":"string","nodeType":"YulLiteral","src":"3379:4:7","type":"","value":"gm"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3352:6:7"},"nodeType":"YulFunctionCall","src":"3352:32:7"},"nodeType":"YulExpressionStatement","src":"3352:32:7"},{"nodeType":"YulAssignment","src":"3393:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3405:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3416:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3401:3:7"},"nodeType":"YulFunctionCall","src":"3401:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3393:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3251:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3265:4:7","type":""}],"src":"3100:325:7"},{"body":{"nodeType":"YulBlock","src":"3604:151:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3621:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3632:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3614:6:7"},"nodeType":"YulFunctionCall","src":"3614:21:7"},"nodeType":"YulExpressionStatement","src":"3614:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3655:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3666:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3651:3:7"},"nodeType":"YulFunctionCall","src":"3651:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"3671:1:7","type":"","value":"2"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3644:6:7"},"nodeType":"YulFunctionCall","src":"3644:29:7"},"nodeType":"YulExpressionStatement","src":"3644:29:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3693:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3704:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3689:3:7"},"nodeType":"YulFunctionCall","src":"3689:18:7"},{"hexValue":"6869","kind":"string","nodeType":"YulLiteral","src":"3709:4:7","type":"","value":"hi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3682:6:7"},"nodeType":"YulFunctionCall","src":"3682:32:7"},"nodeType":"YulExpressionStatement","src":"3682:32:7"},{"nodeType":"YulAssignment","src":"3723:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3735:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3746:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3731:3:7"},"nodeType":"YulFunctionCall","src":"3731:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3723:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_7624778dedc75f8b322b9fa1632a610d40b85e106c7d9bf0e743a9ce291b9c6f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3581:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3595:4:7","type":""}],"src":"3430:325:7"},{"body":{"nodeType":"YulBlock","src":"3982:228:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3999:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4010:2:7","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3992:6:7"},"nodeType":"YulFunctionCall","src":"3992:21:7"},"nodeType":"YulExpressionStatement","src":"3992:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4033:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4044:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4029:3:7"},"nodeType":"YulFunctionCall","src":"4029:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"4049:1:7","type":"","value":"9"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4022:6:7"},"nodeType":"YulFunctionCall","src":"4022:29:7"},"nodeType":"YulExpressionStatement","src":"4022:29:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4071:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4082:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4067:3:7"},"nodeType":"YulFunctionCall","src":"4067:18:7"},{"hexValue":"202056616c75652061","kind":"string","nodeType":"YulLiteral","src":"4087:11:7","type":"","value":" Value a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4060:6:7"},"nodeType":"YulFunctionCall","src":"4060:39:7"},"nodeType":"YulExpressionStatement","src":"4060:39:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4119:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4130:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4115:3:7"},"nodeType":"YulFunctionCall","src":"4115:20:7"},{"kind":"number","nodeType":"YulLiteral","src":"4137:3:7","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4108:6:7"},"nodeType":"YulFunctionCall","src":"4108:33:7"},"nodeType":"YulExpressionStatement","src":"4108:33:7"},{"nodeType":"YulAssignment","src":"4150:54:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4176:6:7"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4188:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4199:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4184:3:7"},"nodeType":"YulFunctionCall","src":"4184:19:7"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"4158:17:7"},"nodeType":"YulFunctionCall","src":"4158:46:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4150:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3951:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3962:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3973:4:7","type":""}],"src":"3760:450:7"},{"body":{"nodeType":"YulBlock","src":"4437:228:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4454:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4465:2:7","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4447:6:7"},"nodeType":"YulFunctionCall","src":"4447:21:7"},"nodeType":"YulExpressionStatement","src":"4447:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4488:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4499:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4484:3:7"},"nodeType":"YulFunctionCall","src":"4484:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"4504:1:7","type":"","value":"9"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4477:6:7"},"nodeType":"YulFunctionCall","src":"4477:29:7"},"nodeType":"YulExpressionStatement","src":"4477:29:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4526:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4537:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4522:3:7"},"nodeType":"YulFunctionCall","src":"4522:18:7"},{"hexValue":"202056616c75652062","kind":"string","nodeType":"YulLiteral","src":"4542:11:7","type":"","value":" Value b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4515:6:7"},"nodeType":"YulFunctionCall","src":"4515:39:7"},"nodeType":"YulExpressionStatement","src":"4515:39:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4574:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4585:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4570:3:7"},"nodeType":"YulFunctionCall","src":"4570:20:7"},{"kind":"number","nodeType":"YulLiteral","src":"4592:3:7","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4563:6:7"},"nodeType":"YulFunctionCall","src":"4563:33:7"},"nodeType":"YulExpressionStatement","src":"4563:33:7"},{"nodeType":"YulAssignment","src":"4605:54:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4631:6:7"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4643:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4654:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4639:3:7"},"nodeType":"YulFunctionCall","src":"4639:19:7"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"4613:17:7"},"nodeType":"YulFunctionCall","src":"4613:46:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4605:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4406:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4417:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4428:4:7","type":""}],"src":"4215:450:7"},{"body":{"nodeType":"YulBlock","src":"4728:188:7","statements":[{"body":{"nodeType":"YulBlock","src":"4772:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4774:16:7"},"nodeType":"YulFunctionCall","src":"4774:18:7"},"nodeType":"YulExpressionStatement","src":"4774:18:7"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4744:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"4752:18:7","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4741:2:7"},"nodeType":"YulFunctionCall","src":"4741:30:7"},"nodeType":"YulIf","src":"4738:56:7"},{"nodeType":"YulAssignment","src":"4803:107:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4823:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"4831:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4819:3:7"},"nodeType":"YulFunctionCall","src":"4819:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"4836:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4815:3:7"},"nodeType":"YulFunctionCall","src":"4815:88:7"},{"kind":"number","nodeType":"YulLiteral","src":"4905:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4811:3:7"},"nodeType":"YulFunctionCall","src":"4811:99:7"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"4803:4:7"}]}]},"name":"array_allocation_size_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"4708:6:7","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"4719:4:7","type":""}],"src":"4670:246:7"},{"body":{"nodeType":"YulBlock","src":"4974:205:7","statements":[{"nodeType":"YulVariableDeclaration","src":"4984:10:7","value":{"kind":"number","nodeType":"YulLiteral","src":"4993:1:7","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4988:1:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"5053:63:7","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5078:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"5083:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5074:3:7"},"nodeType":"YulFunctionCall","src":"5074:11:7"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5097:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"5102:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5093:3:7"},"nodeType":"YulFunctionCall","src":"5093:11:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5087:5:7"},"nodeType":"YulFunctionCall","src":"5087:18:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5067:6:7"},"nodeType":"YulFunctionCall","src":"5067:39:7"},"nodeType":"YulExpressionStatement","src":"5067:39:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5014:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"5017:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5011:2:7"},"nodeType":"YulFunctionCall","src":"5011:13:7"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5025:19:7","statements":[{"nodeType":"YulAssignment","src":"5027:15:7","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5036:1:7"},{"kind":"number","nodeType":"YulLiteral","src":"5039:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5032:3:7"},"nodeType":"YulFunctionCall","src":"5032:10:7"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5027:1:7"}]}]},"pre":{"nodeType":"YulBlock","src":"5007:3:7","statements":[]},"src":"5003:113:7"},{"body":{"nodeType":"YulBlock","src":"5142:31:7","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5155:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"5160:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5151:3:7"},"nodeType":"YulFunctionCall","src":"5151:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"5169:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5144:6:7"},"nodeType":"YulFunctionCall","src":"5144:27:7"},"nodeType":"YulExpressionStatement","src":"5144:27:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5131:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"5134:6:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5128:2:7"},"nodeType":"YulFunctionCall","src":"5128:13:7"},"nodeType":"YulIf","src":"5125:48:7"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4952:3:7","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4957:3:7","type":""},{"name":"length","nodeType":"YulTypedName","src":"4962:6:7","type":""}],"src":"4921:258:7"},{"body":{"nodeType":"YulBlock","src":"5231:261:7","statements":[{"nodeType":"YulVariableDeclaration","src":"5241:117:7","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5263:6:7"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"5279:4:7"},{"kind":"number","nodeType":"YulLiteral","src":"5285:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5275:3:7"},"nodeType":"YulFunctionCall","src":"5275:13:7"},{"kind":"number","nodeType":"YulLiteral","src":"5290:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5271:3:7"},"nodeType":"YulFunctionCall","src":"5271:86:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5259:3:7"},"nodeType":"YulFunctionCall","src":"5259:99:7"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5245:10:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"5433:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5435:16:7"},"nodeType":"YulFunctionCall","src":"5435:18:7"},"nodeType":"YulExpressionStatement","src":"5435:18:7"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5376:10:7"},{"kind":"number","nodeType":"YulLiteral","src":"5388:18:7","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5373:2:7"},"nodeType":"YulFunctionCall","src":"5373:34:7"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5412:10:7"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5424:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5409:2:7"},"nodeType":"YulFunctionCall","src":"5409:22:7"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5370:2:7"},"nodeType":"YulFunctionCall","src":"5370:62:7"},"nodeType":"YulIf","src":"5367:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5471:2:7","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5475:10:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5464:6:7"},"nodeType":"YulFunctionCall","src":"5464:22:7"},"nodeType":"YulExpressionStatement","src":"5464:22:7"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5213:6:7","type":""},{"name":"size","nodeType":"YulTypedName","src":"5221:4:7","type":""}],"src":"5184:308:7"},{"body":{"nodeType":"YulBlock","src":"5529:152:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5546:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5549:77:7","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5539:6:7"},"nodeType":"YulFunctionCall","src":"5539:88:7"},"nodeType":"YulExpressionStatement","src":"5539:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5643:1:7","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5646:4:7","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5636:6:7"},"nodeType":"YulFunctionCall","src":"5636:15:7"},"nodeType":"YulExpressionStatement","src":"5636:15:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5667:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5670:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5660:6:7"},"nodeType":"YulFunctionCall","src":"5660:15:7"},"nodeType":"YulExpressionStatement","src":"5660:15:7"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"5497:184:7"},{"body":{"nodeType":"YulBlock","src":"5729:136:7","statements":[{"body":{"nodeType":"YulBlock","src":"5774:85:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5803:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5806:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5809:1:7","type":"","value":"4"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"5788:14:7"},"nodeType":"YulFunctionCall","src":"5788:23:7"},"nodeType":"YulExpressionStatement","src":"5788:23:7"},{"nodeType":"YulAssignment","src":"5824:25:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5835:3:7","type":"","value":"224"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5846:1:7","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5840:5:7"},"nodeType":"YulFunctionCall","src":"5840:8:7"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5831:3:7"},"nodeType":"YulFunctionCall","src":"5831:18:7"},"variableNames":[{"name":"sig","nodeType":"YulIdentifier","src":"5824:3:7"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"5745:14:7"},"nodeType":"YulFunctionCall","src":"5745:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"5763:1:7","type":"","value":"3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5742:2:7"},"nodeType":"YulFunctionCall","src":"5742:23:7"},"nodeType":"YulIf","src":"5739:120:7"}]},"name":"return_data_selector","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"sig","nodeType":"YulTypedName","src":"5721:3:7","type":""}],"src":"5686:179:7"},{"body":{"nodeType":"YulBlock","src":"5917:684:7","statements":[{"body":{"nodeType":"YulBlock","src":"5957:9:7","statements":[{"nodeType":"YulLeave","src":"5959:5:7"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"5933:14:7"},"nodeType":"YulFunctionCall","src":"5933:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"5951:4:7","type":"","value":"0x44"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5930:2:7"},"nodeType":"YulFunctionCall","src":"5930:26:7"},"nodeType":"YulIf","src":"5927:39:7"},{"nodeType":"YulVariableDeclaration","src":"5975:21:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5993:2:7","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5987:5:7"},"nodeType":"YulFunctionCall","src":"5987:9:7"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"5979:4:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6005:76:7","value":{"kind":"number","nodeType":"YulLiteral","src":"6015:66:7","type":"","value":"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6009:2:7","type":""}]},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6105:4:7"},{"kind":"number","nodeType":"YulLiteral","src":"6111:1:7","type":"","value":"4"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"6118:14:7"},"nodeType":"YulFunctionCall","src":"6118:16:7"},{"name":"_1","nodeType":"YulIdentifier","src":"6136:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6114:3:7"},"nodeType":"YulFunctionCall","src":"6114:25:7"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"6090:14:7"},"nodeType":"YulFunctionCall","src":"6090:50:7"},"nodeType":"YulExpressionStatement","src":"6090:50:7"},{"nodeType":"YulVariableDeclaration","src":"6149:25:7","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6169:4:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6163:5:7"},"nodeType":"YulFunctionCall","src":"6163:11:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6153:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6183:26:7","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"6193:14:7"},"nodeType":"YulFunctionCall","src":"6193:16:7"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6187:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6218:28:7","value":{"kind":"number","nodeType":"YulLiteral","src":"6228:18:7","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6222:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"6304:9:7","statements":[{"nodeType":"YulLeave","src":"6306:5:7"}]},"condition":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6264:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"6272:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6261:2:7"},"nodeType":"YulFunctionCall","src":"6261:14:7"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6284:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"6292:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6280:3:7"},"nodeType":"YulFunctionCall","src":"6280:17:7"},{"name":"_2","nodeType":"YulIdentifier","src":"6299:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6277:2:7"},"nodeType":"YulFunctionCall","src":"6277:25:7"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6258:2:7"},"nodeType":"YulFunctionCall","src":"6258:45:7"},"nodeType":"YulIf","src":"6255:58:7"},{"nodeType":"YulVariableDeclaration","src":"6322:28:7","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6337:4:7"},{"name":"offset","nodeType":"YulIdentifier","src":"6343:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6333:3:7"},"nodeType":"YulFunctionCall","src":"6333:17:7"},"variables":[{"name":"msg","nodeType":"YulTypedName","src":"6326:3:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6359:24:7","value":{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"6379:3:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6373:5:7"},"nodeType":"YulFunctionCall","src":"6373:10:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6363:6:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"6410:9:7","statements":[{"nodeType":"YulLeave","src":"6412:5:7"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6398:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"6406:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6395:2:7"},"nodeType":"YulFunctionCall","src":"6395:14:7"},"nodeType":"YulIf","src":"6392:27:7"},{"body":{"nodeType":"YulBlock","src":"6501:9:7","statements":[{"nodeType":"YulLeave","src":"6503:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"6442:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"6447:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6438:3:7"},"nodeType":"YulFunctionCall","src":"6438:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"6456:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6434:3:7"},"nodeType":"YulFunctionCall","src":"6434:27:7"},{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6471:4:7"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"6477:14:7"},"nodeType":"YulFunctionCall","src":"6477:16:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6467:3:7"},"nodeType":"YulFunctionCall","src":"6467:27:7"},{"name":"_1","nodeType":"YulIdentifier","src":"6496:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6463:3:7"},"nodeType":"YulFunctionCall","src":"6463:36:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6431:2:7"},"nodeType":"YulFunctionCall","src":"6431:69:7"},"nodeType":"YulIf","src":"6428:82:7"},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6539:4:7"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6553:6:7"},{"name":"length","nodeType":"YulIdentifier","src":"6561:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6549:3:7"},"nodeType":"YulFunctionCall","src":"6549:19:7"},{"kind":"number","nodeType":"YulLiteral","src":"6570:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6545:3:7"},"nodeType":"YulFunctionCall","src":"6545:30:7"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"6519:19:7"},"nodeType":"YulFunctionCall","src":"6519:57:7"},"nodeType":"YulExpressionStatement","src":"6519:57:7"},{"nodeType":"YulAssignment","src":"6585:10:7","value":{"name":"msg","nodeType":"YulIdentifier","src":"6592:3:7"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"6585:3:7"}]}]},"name":"try_decode_error_message","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"5909:3:7","type":""}],"src":"5870:731:7"}]},"contents":"{\n { }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let _2 := calldataload(_1)\n let _3 := array_allocation_size_string(_2)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _3)\n mstore(memPtr, _2)\n if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_1, 32), _2)\n mstore(add(add(memPtr, _2), 32), 0)\n value0 := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let _2 := mload(_1)\n let _3 := array_allocation_size_string(_2)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _3)\n mstore(memPtr, _2)\n if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory(add(_1, 32), add(memPtr, 32), _2)\n value0 := memPtr\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"Error: a == b not satisfied [str\")\n mstore(add(headStart, 96), \"ing]\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 2)\n mstore(add(headStart, 64), \"gm\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_7624778dedc75f8b322b9fa1632a610d40b85e106c7d9bf0e743a9ce291b9c6f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 2)\n mstore(add(headStart, 64), \"hi\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 9)\n mstore(add(headStart, 96), \" Value a\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_string(value0, add(headStart, 128))\n }\n function abi_encode_tuple_t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 9)\n mstore(add(headStart, 96), \" Value b\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_string(value0, add(headStart, 128))\n }\n function array_allocation_size_string(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n }\n function copy_memory_to_memory(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length) { mstore(add(dst, length), 0) }\n }\n function finalize_allocation(memPtr, size)\n {\n let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function return_data_selector() -> sig\n {\n if gt(returndatasize(), 3)\n {\n returndatacopy(0, 0, 4)\n sig := shr(224, mload(0))\n }\n }\n function try_decode_error_message() -> ret\n {\n if lt(returndatasize(), 0x44) { leave }\n let data := mload(64)\n let _1 := 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc\n returndatacopy(data, 4, add(returndatasize(), _1))\n let offset := mload(data)\n let _2 := returndatasize()\n let _3 := 0xffffffffffffffff\n if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n let msg := add(data, offset)\n let length := mload(msg)\n if gt(length, _3) { leave }\n if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n finalize_allocation(data, add(add(offset, length), 0x20))\n ret := msg\n }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c8063ba414fa611610050578063ba414fa61461009c578063e0747015146100c2578063fa7626d4146100ca57600080fd5b80630a9254e4146100775780635306d34d146100815780636721f71814610089575b600080fd5b61007f6100d7565b005b61007f6102ea565b61007f6100973660046108de565b610441565b6000546100ae90610100900460ff1681565b604051901515815260200160405180910390f35b61007f610594565b6000546100ae9060ff1681565b6040516100e3906108c4565b604051809103906000f0801580156100ff573d6000803e3d6000fd5b50600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905560405191049091169061015e906108d1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610197573d6000803e3d6000fd5b50600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560005460405162010000909104909116906101f3906108d1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801561022c573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081529083166004820152620100009091049091169063f2fde38b90602401600060405180830381600087803b1580156102d057600080fd5b505af11580156102e4573d6000803e3d6000fd5b50505050565b6001546040517fead710c400000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f676d000000000000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c490606401600060405180830381600087803b15801561038357600080fd5b505af1925050508015610394575060015b61040e576103a0610be0565b806308c379a0141561040257506103b5610bfc565b806103c05750610404565b6103ff816040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d000000000000000000000000815250610741565b50565b505b3d6000803e3d6000fd5b61043f600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b565b6001546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c490610497908490600401610a4c565b600060405180830381600087803b1580156104b157600080fd5b505af11580156104c5573d6000803e3d6000fd5b505050506103ff600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef690cc06040518163ffffffff1660e01b815260040160006040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261058e9190810190610964565b82610741565b6001546040517fead710c400000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f6869000000000000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c490606401600060405180830381600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b5050505061043f600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ef690cc06040518163ffffffff1660e01b815260040160006040518083038186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261070a9190810190610964565b6040518060400160405280600281526020017f68690000000000000000000000000000000000000000000000000000000000008152505b806040516020016107529190610a30565b60405160208183030381529060405280519060200120826040516020016107799190610a30565b60405160208183030381529060405280519060200120146108c0577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516108199060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516108509190610a66565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516108879190610aad565b60405180910390a16108c0600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b5050565b61097c80610ca583390190565b61039e8061162183390190565b6000602082840312156108f057600080fd5b813567ffffffffffffffff81111561090757600080fd5b8201601f8101841361091857600080fd5b803561092381610af4565b6040516109308282610b66565b82815286602084860101111561094557600080fd5b8260208501602083013760009281016020019290925250949350505050565b60006020828403121561097657600080fd5b815167ffffffffffffffff81111561098d57600080fd5b8201601f8101841361099e57600080fd5b80516109a981610af4565b6040516109b68282610b66565b8281528660208486010111156109cb57600080fd5b6109dc836020830160208701610b3a565b9695505050505050565b600081518084526109fe816020860160208601610b3a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251610a42818460208701610b3a565b9190910192915050565b602081526000610a5f60208301846109e6565b9392505050565b60408152600960408201527f202056616c7565206100000000000000000000000000000000000000000000006060820152608060208201526000610a5f60808301846109e6565b60408152600960408201527f202056616c7565206200000000000000000000000000000000000000000000006060820152608060208201526000610a5f60808301846109e6565b600067ffffffffffffffff821115610b0e57610b0e610bb1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015610b55578181015183820152602001610b3d565b838111156102e45750506000910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715610baa57610baa610bb1565b6040525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115610bf95760046000803e5060005160e01c5b90565b600060443d1015610c0a5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715610c5857505050505090565b8285019150815181811115610c705750505050505090565b843d8701016020828501011115610c8a5750505050505090565b610c9960208286010187610b66565b50909594505050505056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108fe8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033608060405234801561001057600080fd5b5060405161039e38038061039e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61030b806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033a2646970667358221220ad80bd62f261460562ca174ee1c98c204fef7777d1d6f8bacae87697631df73c64736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBA414FA6 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xBA414FA6 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xE0747015 EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9254E4 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x5306D34D EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x6721F718 EQ PUSH2 0x89 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x2EA JUMP JUMPDEST PUSH2 0x7F PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x8DE JUMP JUMPDEST PUSH2 0x441 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAE SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x594 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xAE SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP1 PUSH2 0x8C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF AND PUSH3 0x10000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x15E SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x197 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x1F3 SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x22C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x394 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x40E JUMPI PUSH2 0x3A0 PUSH2 0xBE0 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x402 JUMPI POP PUSH2 0x3B5 PUSH2 0xBFC JUMP JUMPDEST DUP1 PUSH2 0x3C0 JUMPI POP PUSH2 0x404 JUMP JUMPDEST PUSH2 0x3FF DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP PUSH2 0x741 JUMP JUMPDEST POP JUMP JUMPDEST POP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x43F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x497 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0xA4C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3FF PUSH1 0x0 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEF690CC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x58E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x964 JUMP JUMPDEST DUP3 PUSH2 0x741 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6869000000000000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x62D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x641 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x43F PUSH1 0x0 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEF690CC0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x70A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x964 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6869000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x752 SWAP2 SWAP1 PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x779 SWAP2 SWAP1 PUSH2 0xA30 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0x8C0 JUMPI PUSH32 0x41304FACD9323D75B11BCDD609CB38EFFFFDB05710F7CAF0E9B16C6D9D709F50 PUSH1 0x40 MLOAD PUSH2 0x819 SWAP1 PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4572726F723A2061203D3D2062206E6F7420736174697366696564205B737472 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x696E675D00000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP3 PUSH1 0x40 MLOAD PUSH2 0x850 SWAP2 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x280F4446B28A1372417DDA658D30B95B2992B12AC9C7F378535F29A97ACF3583 DUP2 PUSH1 0x40 MLOAD PUSH2 0x887 SWAP2 SWAP1 PUSH2 0xAAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x8C0 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF AND PUSH2 0x100 OR SWAP1 SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C DUP1 PUSH2 0xCA5 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0x1621 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x918 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x923 DUP2 PUSH2 0xAF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x930 DUP3 DUP3 PUSH2 0xB66 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP7 PUSH1 0x20 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x945 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x98D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x9A9 DUP2 PUSH2 0xAF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9B6 DUP3 DUP3 PUSH2 0xB66 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP7 PUSH1 0x20 DUP5 DUP7 ADD ADD GT ISZERO PUSH2 0x9CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9DC DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xB3A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x9FE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xB3A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xA42 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xB3A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA5F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x9E6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520610000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA5F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x9E6 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x9 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x202056616C756520620000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xA5F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x9E6 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xB0E JUMPI PUSH2 0xB0E PUSH2 0xBB1 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB55 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB3D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xBAA JUMPI PUSH2 0xBAA PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0xBF9 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0xC0A JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP1 RETURNDATASIZE ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0xC58 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xC70 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xC8A JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xC99 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xB66 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x8FE DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x39E CODESIZE SUB DUP1 PUSH2 0x39E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30B DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033A26469 PUSH17 0x667358221220AD80BD62F261460562CA17 0x4E 0xE1 0xC9 DUP13 KECCAK256 0x4F 0xEF PUSH24 0x77D1D6F8BACAE87697631DF73C64736F6C63430008070033 ","sourceMap":"139:488:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:209:5;;;:::i;:::-;;175:171:4;;;:::i;473:151::-;;;;;;:::i;:::-;;:::i;1605:18:0:-;;;;;;;;;;;;;;;2443:14:7;;2436:22;2418:41;;2406:2;2391:18;1605::0;;;;;;;352:115:4;;;:::i;1573:26:0:-;;;;;;;;;619:209:5;671:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;661:7:5;:23;;;;;;;;;;;;;;;;;;;702:26;;719:7;;;;;;702:26;;;:::i;:::-;2223:42:7;2211:55;;;2193:74;;2181:2;2166:18;702:26:5;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;694:5:5;:34;;;;;;;;;;;-1:-1:-1;761:7:5;744:26;;761:7;;;;;;;;744:26;;;:::i;:::-;2223:42:7;2211:55;;;2193:74;;2181:2;2166:18;744:26:5;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;738:3:5;:32;;;;;;;;;;;-1:-1:-1;780:7:5;-1:-1:-1;814:5:5;780:41;;;;;814:5;;;780:41;;;2193:74:7;780:7:5;;;;;;;;:25;;2166:18:7;;780:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:209::o;175:171:4:-;220:5;;:17;;;;;3302:2:7;220:17:4;;;3284:21:7;3341:1;3321:18;;;3314:29;3379:4;3359:18;;;3352:32;220:5:4;;;;;:11;;3401:18:7;;220:17:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;216:124;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;297:32;306:5;313:15;;;;;;;;;;;;;;;;;297:8;:32::i;:::-;250:90;175:171::o;216:124::-;;;;;;;;;;;240:6;1853::0;:13;;;;;;;;1818:55;240:6:4;175:171::o;473:151::-;548:5;;:21;;;;;:5;;;;;:11;;:21;;560:8;;548:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;579:38;588:7;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;608:8;579;:38::i;352:115::-;399:5;;:17;;;;;3632:2:7;399:17:4;;;3614:21:7;3671:1;3651:18;;;3644:29;3709:4;3689:18;;;3682:32;399:5:4;;;;;:11;;3731:18:7;;399:17:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;426:34;435:7;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;426:34;;;;;;;;;;;;;;;;;13479:342:0;13615:1;13598:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;13588:30;;;;;;13581:1;13564:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;13554:30;;;;;;:64;13550:265;;13639:43;;;;;2897:2:7;2879:21;;;2936:2;2916:18;;;2909:30;2975:34;2970:2;2955:18;;2948:62;3046:6;3041:2;3026:18;;3019:34;3085:3;3070:19;;2695:400;13639:43:0;;;;;;;;13701:32;13731:1;13701:32;;;;;;:::i;:::-;;;;;;;;13752;13782:1;13752:32;;;;;;:::i;:::-;;;;;;;;13798:6;1853;:13;;;;;;;;1818:55;13798:6;13479:342;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:729:7:-;83:6;136:2;124:9;115:7;111:23;107:32;104:52;;;152:1;149;142:12;104:52;192:9;179:23;225:18;217:6;214:30;211:50;;;257:1;254;247:12;211:50;280:22;;333:4;325:13;;321:27;-1:-1:-1;311:55:7;;362:1;359;352:12;311:55;398:2;385:16;420:32;449:2;420:32;:::i;:::-;481:2;475:9;493:31;521:2;513:6;493:31;:::i;:::-;548:2;540:6;533:18;588:7;583:2;578;574;570:11;566:20;563:33;560:53;;;609:1;606;599:12;560:53;665:2;660;656;652:11;647:2;639:6;635:15;622:46;710:1;688:15;;;705:2;684:24;677:35;;;;-1:-1:-1;692:6:7;14:729;-1:-1:-1;;;;14:729:7:o;748:691::-;828:6;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;930:9;924:16;963:18;955:6;952:30;949:50;;;995:1;992;985:12;949:50;1018:22;;1071:4;1063:13;;1059:27;-1:-1:-1;1049:55:7;;1100:1;1097;1090:12;1049:55;1129:2;1123:9;1151:32;1180:2;1151:32;:::i;:::-;1212:2;1206:9;1224:31;1252:2;1244:6;1224:31;:::i;:::-;1279:2;1271:6;1264:18;1319:7;1314:2;1309;1305;1301:11;1297:20;1294:33;1291:53;;;1340:1;1337;1330:12;1291:53;1353:55;1405:2;1400;1392:6;1388:15;1383:2;1379;1375:11;1353:55;:::i;:::-;1427:6;748:691;-1:-1:-1;;;;;;748:691:7:o;1444:317::-;1486:3;1524:5;1518:12;1551:6;1546:3;1539:19;1567:63;1623:6;1616:4;1611:3;1607:14;1600:4;1593:5;1589:16;1567:63;:::i;:::-;1675:2;1663:15;1680:66;1659:88;1650:98;;;;1750:4;1646:109;;1444:317;-1:-1:-1;;1444:317:7:o;1766:276::-;1897:3;1935:6;1929:13;1951:53;1997:6;1992:3;1985:4;1977:6;1973:17;1951:53;:::i;:::-;2020:16;;;;;1766:276;-1:-1:-1;;1766:276:7:o;2470:220::-;2619:2;2608:9;2601:21;2582:4;2639:45;2680:2;2669:9;2665:18;2657:6;2639:45;:::i;:::-;2631:53;2470:220;-1:-1:-1;;;2470:220:7:o;3760:450::-;4010:2;3999:9;3992:21;4049:1;4044:2;4033:9;4029:18;4022:29;4087:11;4082:2;4071:9;4067:18;4060:39;4137:3;4130:4;4119:9;4115:20;4108:33;3973:4;4158:46;4199:3;4188:9;4184:19;4176:6;4158:46;:::i;4215:450::-;4465:2;4454:9;4447:21;4504:1;4499:2;4488:9;4484:18;4477:29;4542:11;4537:2;4526:9;4522:18;4515:39;4592:3;4585:4;4574:9;4570:20;4563:33;4428:4;4613:46;4654:3;4643:9;4639:19;4631:6;4613:46;:::i;4670:246::-;4719:4;4752:18;4744:6;4741:30;4738:56;;;4774:18;;:::i;:::-;-1:-1:-1;4831:2:7;4819:15;4836:66;4815:88;4905:4;4811:99;;4670:246::o;4921:258::-;4993:1;5003:113;5017:6;5014:1;5011:13;5003:113;;;5093:11;;;5087:18;5074:11;;;5067:39;5039:2;5032:10;5003:113;;;5134:6;5131:1;5128:13;5125:48;;;-1:-1:-1;;5169:1:7;5151:16;;5144:27;4921:258::o;5184:308::-;5290:66;5285:2;5279:4;5275:13;5271:86;5263:6;5259:99;5424:6;5412:10;5409:22;5388:18;5376:10;5373:34;5370:62;5367:88;;;5435:18;;:::i;:::-;5471:2;5464:22;-1:-1:-1;;5184:308:7:o;5497:184::-;5549:77;5546:1;5539:88;5646:4;5643:1;5636:15;5670:4;5667:1;5660:15;5686:179;5721:3;5763:1;5745:16;5742:23;5739:120;;;5809:1;5806;5803;5788:23;-1:-1:-1;5846:1:7;5840:8;5835:3;5831:18;5739:120;5686:179;:::o;5870:731::-;5909:3;5951:4;5933:16;5930:26;5927:39;;;5870:731;:::o;5927:39::-;5993:2;5987:9;6015:66;6136:2;6118:16;6114:25;6111:1;6105:4;6090:50;6169:4;6163:11;6193:16;6228:18;6299:2;6292:4;6284:6;6280:17;6277:25;6272:2;6264:6;6261:14;6258:45;6255:58;;;6306:5;;;;;5870:731;:::o;6255:58::-;6343:6;6337:4;6333:17;6322:28;;6379:3;6373:10;6406:2;6398:6;6395:14;6392:27;;;6412:5;;;;;;5870:731;:::o;6392:27::-;6496:2;6477:16;6471:4;6467:27;6463:36;6456:4;6447:6;6442:3;6438:16;6434:27;6431:69;6428:82;;;6503:5;;;;;;5870:731;:::o;6428:82::-;6519:57;6570:4;6561:6;6553;6549:19;6545:30;6539:4;6519:57;:::i;:::-;-1:-1:-1;6592:3:7;;5870:731;-1:-1:-1;;;;;5870:731:7:o"}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCanSetGreeting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCannotGm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"greeting\",\"type\":\"string\"}],\"name\":\"testWorksForAllGreetings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/Greeter.t.sol\":\"Greet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/ds-test/src/test.sol\":{\"keccak256\":\"0x529f30c5939d75689f6a982f7f96b8898bed30bd90ec5b385b57cab681e12b00\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://89075d5a96e87acef1d00cf556b409d1836728ec2e92f5629ceb5cae3d1e4354\",\"dweb:/ipfs/QmPAViJrxffEDns9GEMVSAzmr3soAzfrEg1CVuovwmNfnt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"src/Greeter.sol\":{\"keccak256\":\"0xc34bd8409a4fa4a474f29c6cb7d076cf9379c9c79e257c5cda7e5d114023f0f6\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://9db4f0c61754c54fd3b3ae58dfaf72865f8134e96959f7fc295b1a8e3b7511d7\",\"dweb:/ipfs/QmPuGbtNJ9rRaC7kFWqy76A9sfcGGcYAps6yPRrW28v4xd\"]},\"src/test/Greeter.t.sol\":{\"keccak256\":\"0xf7fe97110b31611de26973a826978b120cf08bb9263444bf52ea639f3f568c16\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://139a8edf691557963f5e6d3925f0f3fdf14c211974bbc399b81c5326f6c9f5ec\",\"dweb:/ipfs/QmVBNcpL91o99MkuDS9Qu5kHe68NPLyphtf3yJTYfCn1oC\"]},\"src/test/utils/GreeterTest.sol\":{\"keccak256\":\"0xc49253ed5e0fc9185d066993945370493f2bb08f00a997680b112fe6f9b5d455\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://d5ff89c2bb371b6ddfb66b905b3c3597aa080e1ca5c1c1303e529f2c8fc98a67\",\"dweb:/ipfs/Qmc28bfatf99DDv6P8dpdo5Zsw7QdSoC1N4FV1TJGZF5Vx\"]},\"src/test/utils/Hevm.sol\":{\"keccak256\":\"0xd477fc888e2bdbaf45c8babf175c93127478ae74543556ffebb9877a8dd823a9\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://7fb2a52878484cea3793a92ae34b3a9f3e77f976eda7c7f91e2edb5b9ba38be3\",\"dweb:/ipfs/Qmf7JsG4uMjd7WX1h8rBPcpXv1m4mF3sdrr6VYzKj1SXUX\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":532,"contract":"src/test/Greeter.t.sol:Greet","label":"IS_TEST","offset":0,"slot":"0","type":"t_bool"},{"astId":534,"contract":"src/test/Greeter.t.sol:Greet","label":"failed","offset":1,"slot":"0","type":"t_bool"},{"astId":260,"contract":"src/test/Greeter.t.sol:Greet","label":"greeter","offset":2,"slot":"0","type":"t_contract(Greeter)60"},{"astId":263,"contract":"src/test/Greeter.t.sol:Greet","label":"alice","offset":0,"slot":"1","type":"t_contract(User)249"},{"astId":266,"contract":"src/test/Greeter.t.sol:Greet","label":"bob","offset":0,"slot":"2","type":"t_contract(User)249"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(Greeter)60":{"encoding":"inplace","label":"contract Greeter","numberOfBytes":"20"},"t_contract(User)249":{"encoding":"inplace","label":"contract User","numberOfBytes":"20"}}}}},"src/test/utils/GreeterTest.sol":{"GreeterTest":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"log_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"log_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"","type":"bytes32"}],"name":"log_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"","type":"int256"}],"name":"log_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"address","name":"val","type":"address"}],"name":"log_named_address","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes","name":"val","type":"bytes"}],"name":"log_named_bytes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"bytes32","name":"val","type":"bytes32"}],"name":"log_named_bytes32","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"decimals","type":"uint256"}],"name":"log_named_decimal_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"int256","name":"val","type":"int256"}],"name":"log_named_int","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"string","name":"val","type":"string"}],"name":"log_named_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"}],"name":"log_named_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"log_string","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"log_uint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"logs","type":"event"},{"inputs":[],"name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setUp","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60806040526000805460ff1916600117905534801561001d57600080fd5b506110008061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063ba414fa614610050578063fa7626d414610076575b600080fd5b61004e610083565b005b60005461006290610100900460ff1681565b604051901515815260200160405180910390f35b6000546100629060ff1681565b60405161008f90610296565b604051809103906000f0801580156100ab573d6000803e3d6000fd5b50600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905560405191049091169061010a906102a3565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610143573d6000803e3d6000fd5b50600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600054604051620100009091049091169061019f906102a3565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156101d8573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081529083166004820152620100009091049091169063f2fde38b90602401600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b50505050565b61097c806102b183390190565b61039e80610c2d8339019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108fe8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033608060405234801561001057600080fd5b5060405161039e38038061039e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61030b806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033a2646970667358221220e06545f20edeee00d94d15f0094fdadbddebdb01441ea964df3d7e79cc86950964736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1000 DUP1 PUSH2 0x2D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA9254E4 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBA414FA6 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x83 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x62 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x62 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8F SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF AND PUSH3 0x10000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x10A SWAP1 PUSH2 0x2A3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x143 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x19F SWAP1 PUSH2 0x2A3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x290 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x97C DUP1 PUSH2 0x2B1 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0xC2D DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x8FE DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x39E CODESIZE SUB DUP1 PUSH2 0x39E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30B DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033A26469 PUSH17 0x667358221220E06545F20EDEEE00D94D15 CREATE MULMOD 0x4F 0xDA 0xDB 0xDD 0xEB 0xDB ADD DIFFICULTY 0x1E 0xA9 PUSH5 0xDF3D7E79CC DUP7 SWAP6 MULMOD PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ","sourceMap":"417:413:5:-:0;;;1573:26:0;;;-1:-1:-1;;1573:26:0;1595:4;1573:26;;;417:413:5;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@IS_TEST_532":{"entryPoint":null,"id":532,"parameterSlots":0,"returnSlots":0},"@failed_534":{"entryPoint":null,"id":534,"parameterSlots":0,"returnSlots":0},"@setUp_308":{"entryPoint":131,"id":308,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:434:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:125:7","statements":[{"nodeType":"YulAssignment","src":"125:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:7"},"nodeType":"YulFunctionCall","src":"133:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:7"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"190:42:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:7"},"nodeType":"YulFunctionCall","src":"178:55:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:7"},"nodeType":"YulFunctionCall","src":"160:74:7"},"nodeType":"YulExpressionStatement","src":"160:74:7"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:7","type":""}],"src":"14:226:7"},{"body":{"nodeType":"YulBlock","src":"340:92:7","statements":[{"nodeType":"YulAssignment","src":"350:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"362:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"373:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"358:3:7"},"nodeType":"YulFunctionCall","src":"358:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"350:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"392:9:7"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"417:6:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"410:6:7"},"nodeType":"YulFunctionCall","src":"410:14:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"403:6:7"},"nodeType":"YulFunctionCall","src":"403:22:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"385:6:7"},"nodeType":"YulFunctionCall","src":"385:41:7"},"nodeType":"YulExpressionStatement","src":"385:41:7"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"309:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"320:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"331:4:7","type":""}],"src":"245:187:7"}]},"contents":"{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063ba414fa614610050578063fa7626d414610076575b600080fd5b61004e610083565b005b60005461006290610100900460ff1681565b604051901515815260200160405180910390f35b6000546100629060ff1681565b60405161008f90610296565b604051809103906000f0801580156100ab573d6000803e3d6000fd5b50600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905560405191049091169061010a906102a3565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015610143573d6000803e3d6000fd5b50600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600054604051620100009091049091169061019f906102a3565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156101d8573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556000546001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081529083166004820152620100009091049091169063f2fde38b90602401600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b50505050565b61097c806102b183390190565b61039e80610c2d8339019056fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108fe8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ead710c411610050578063ead710c4146100b6578063ef690cc0146100c9578063f2fde38b146100de57600080fd5b8063715018a6146100775780638da5cb5b14610081578063c0129d43146100ae575b600080fd5b61007f6100f1565b005b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61007f610183565b61007f6100c436600461067d565b6102ab565b6100d161037b565b6040516100a59190610768565b61007f6100ec366004610640565b610409565b60005473ffffffffffffffffffffffffffffffffffffffff163314610177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101816000610532565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610204576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b61020f600a4361083d565b6000146040518060600160405280602181526020016108a86021913990610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b506040805180820190915260028082527f676d00000000000000000000000000000000000000000000000000000000000060209092019182526102a8916001916105a7565b50565b7f71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270816040516020016102dd919061074c565b6040516020818303038152906040528051906020012014156040518060400160405280601481526020017f63616e6e6f74206772656574207769746820676d00000000000000000000000081525090610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016e9190610768565b5080516103779060019060208401906105a7565b5050565b60018054610388906107e9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b4906107e9565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016e565b73ffffffffffffffffffffffffffffffffffffffff811661052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016e565b6102a8815b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546105b3906107e9565b90600052602060002090601f0160209004810192826105d5576000855561061b565b82601f106105ee57805160ff191683800117855561061b565b8280016001018555821561061b579182015b8281111561061b578251825591602001919060010190610600565b5061062792915061062b565b5090565b5b80821115610627576000815560010161062c565b60006020828403121561065257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461067657600080fd5b9392505050565b60006020828403121561068f57600080fd5b813567ffffffffffffffff808211156106a757600080fd5b818401915084601f8301126106bb57600080fd5b8135818111156106cd576106cd610878565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561071357610713610878565b8160405282815287602084870101111561072c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825161075e8184602087016107b9565b9190910192915050565b60208152600082518060208401526107878160408501602087016107b9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b838110156107d45781810151838201526020016107bc565b838111156107e3576000848401525b50505050565b600181811c908216806107fd57607f821691505b60208210811415610837577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082610873577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974a264697066735822122005045f3a3e5209d1d8290892555e955496efc239f089d2b9b89ba31daba73e9564736f6c63430008070033608060405234801561001057600080fd5b5060405161039e38038061039e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61030b806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033a2646970667358221220e06545f20edeee00d94d15f0094fdadbddebdb01441ea964df3d7e79cc86950964736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA9254E4 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBA414FA6 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0xFA7626D4 EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x83 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x62 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x62 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8F SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFF AND PUSH3 0x10000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x10A SWAP1 PUSH2 0x2A3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x143 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x19F SWAP1 PUSH2 0x2A3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF2FDE38B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV SWAP1 SWAP2 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x290 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x97C DUP1 PUSH2 0x2B1 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x39E DUP1 PUSH2 0xC2D DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A CALLER PUSH2 0x1F JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x8FE DUP1 PUSH2 0x7E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEAD710C4 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xEF690CC0 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0xC0129D43 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x183 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x67D JUMP JUMPDEST PUSH2 0x2AB JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA5 SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST PUSH2 0x7F PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x640 JUMP JUMPDEST PUSH2 0x409 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x177 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x181 PUSH1 0x0 PUSH2 0x532 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x204 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x20F PUSH1 0xA NUMBER PUSH2 0x83D JUMP JUMPDEST PUSH1 0x0 EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8A8 PUSH1 0x21 SWAP2 CODECOPY SWAP1 PUSH2 0x263 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH32 0x676D000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x2A8 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x5A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x71B78290913AF2ADDD8FCBE5766DE306AF2C8AFBC466CA891E207F73638C7270 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x74C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x63616E6E6F74206772656574207769746820676D000000000000000000000000 DUP2 MSTORE POP SWAP1 PUSH2 0x363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x768 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x377 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x5A7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x388 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3B4 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x401 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x401 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x16E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x52D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x16E JUMP JUMPDEST PUSH2 0x2A8 DUP2 JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5B3 SWAP1 PUSH2 0x7E9 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x61B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x61B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x61B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST POP PUSH2 0x627 SWAP3 SWAP2 POP PUSH2 0x62B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CD PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x713 JUMPI PUSH2 0x713 PUSH2 0x878 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x75E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x787 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7BC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7FD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x837 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x873 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH10 0x6E76616C696420626C6F PUSH4 0x6B206E75 PUSH14 0x6265722C20706C65617365207761 PUSH10 0x74A26469706673582212 KECCAK256 SDIV DIV 0x5F GASPRICE RETURNDATACOPY MSTORE MULMOD 0xD1 0xD8 0x29 ADDMOD SWAP3 SSTORE 0x5E SWAP6 SLOAD SWAP7 0xEF 0xC2 CODECOPY CREATE DUP10 0xD2 0xB9 0xB8 SWAP12 LOG3 SAR 0xAB 0xA7 RETURNDATACOPY SWAP6 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x39E CODESIZE SUB DUP1 PUSH2 0x39E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30B DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033A26469 PUSH17 0x667358221220E06545F20EDEEE00D94D15 CREATE MULMOD 0x4F 0xDA 0xDB 0xDD 0xEB 0xDB ADD DIFFICULTY 0x1E 0xA9 PUSH5 0xDF3D7E79CC DUP7 SWAP6 MULMOD PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ","sourceMap":"417:413:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:209;;;:::i;:::-;;1605:18:0;;;;;;;;;;;;;;;410:14:7;;403:22;385:41;;373:2;358:18;1605::0;;;;;;;1573:26;;;;;;;;;619:209:5;671:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;661:7:5;:23;;;;;;;;;;;;;;;;;;;702:26;;719:7;;;;;;702:26;;;:::i;:::-;190:42:7;178:55;;;160:74;;148:2;133:18;702:26:5;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;694:5:5;:34;;;;;;;;;;;-1:-1:-1;761:7:5;744:26;;761:7;;;;;;;;744:26;;;:::i;:::-;190:42:7;178:55;;;160:74;;148:2;133:18;744:26:5;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;738:3:5;:32;;;;;;;;;;;-1:-1:-1;780:7:5;-1:-1:-1;814:5:5;780:41;;;;;814:5;;;780:41;;;160:74:7;780:7:5;;;;;;;;:25;;133:18:7;;780:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:209::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o"}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/utils/GreeterTest.sol\":\"GreeterTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/ds-test/src/test.sol\":{\"keccak256\":\"0x529f30c5939d75689f6a982f7f96b8898bed30bd90ec5b385b57cab681e12b00\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://89075d5a96e87acef1d00cf556b409d1836728ec2e92f5629ceb5cae3d1e4354\",\"dweb:/ipfs/QmPAViJrxffEDns9GEMVSAzmr3soAzfrEg1CVuovwmNfnt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"src/Greeter.sol\":{\"keccak256\":\"0xc34bd8409a4fa4a474f29c6cb7d076cf9379c9c79e257c5cda7e5d114023f0f6\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://9db4f0c61754c54fd3b3ae58dfaf72865f8134e96959f7fc295b1a8e3b7511d7\",\"dweb:/ipfs/QmPuGbtNJ9rRaC7kFWqy76A9sfcGGcYAps6yPRrW28v4xd\"]},\"src/test/utils/GreeterTest.sol\":{\"keccak256\":\"0xc49253ed5e0fc9185d066993945370493f2bb08f00a997680b112fe6f9b5d455\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://d5ff89c2bb371b6ddfb66b905b3c3597aa080e1ca5c1c1303e529f2c8fc98a67\",\"dweb:/ipfs/Qmc28bfatf99DDv6P8dpdo5Zsw7QdSoC1N4FV1TJGZF5Vx\"]},\"src/test/utils/Hevm.sol\":{\"keccak256\":\"0xd477fc888e2bdbaf45c8babf175c93127478ae74543556ffebb9877a8dd823a9\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://7fb2a52878484cea3793a92ae34b3a9f3e77f976eda7c7f91e2edb5b9ba38be3\",\"dweb:/ipfs/Qmf7JsG4uMjd7WX1h8rBPcpXv1m4mF3sdrr6VYzKj1SXUX\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":532,"contract":"src/test/utils/GreeterTest.sol:GreeterTest","label":"IS_TEST","offset":0,"slot":"0","type":"t_bool"},{"astId":534,"contract":"src/test/utils/GreeterTest.sol:GreeterTest","label":"failed","offset":1,"slot":"0","type":"t_bool"},{"astId":260,"contract":"src/test/utils/GreeterTest.sol:GreeterTest","label":"greeter","offset":2,"slot":"0","type":"t_contract(Greeter)60"},{"astId":263,"contract":"src/test/utils/GreeterTest.sol:GreeterTest","label":"alice","offset":0,"slot":"1","type":"t_contract(User)249"},{"astId":266,"contract":"src/test/utils/GreeterTest.sol:GreeterTest","label":"bob","offset":0,"slot":"2","type":"t_contract(User)249"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(Greeter)60":{"encoding":"inplace","label":"contract Greeter","numberOfBytes":"20"},"t_contract(User)249":{"encoding":"inplace","label":"contract User","numberOfBytes":"20"}}}},"User":{"abi":[{"inputs":[{"internalType":"address","name":"_greeter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"gm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"greeting","type":"string"}],"name":"greet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_227":{"entryPoint":null,"id":227,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":84,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:306:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:7","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:7"},"nodeType":"YulFunctionCall","src":"143:12:7"},"nodeType":"YulExpressionStatement","src":"143:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:7"},"nodeType":"YulFunctionCall","src":"112:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:7"},"nodeType":"YulFunctionCall","src":"108:32:7"},"nodeType":"YulIf","src":"105:52:7"},{"nodeType":"YulVariableDeclaration","src":"166:29:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:7"},"nodeType":"YulFunctionCall","src":"179:16:7"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:7"},"nodeType":"YulFunctionCall","src":"260:12:7"},"nodeType":"YulExpressionStatement","src":"260:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:7"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:7"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:7","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:7","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:7"},"nodeType":"YulFunctionCall","src":"239:11:7"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:7","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:7"},"nodeType":"YulFunctionCall","src":"235:19:7"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:7"},"nodeType":"YulFunctionCall","src":"224:31:7"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:7"},"nodeType":"YulFunctionCall","src":"214:42:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:7"},"nodeType":"YulFunctionCall","src":"207:50:7"},"nodeType":"YulIf","src":"204:70:7"},{"nodeType":"YulAssignment","src":"283:15:7","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:7"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:7","type":""}],"src":"14:290:7"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161039e38038061039e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61030b806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x39E CODESIZE SUB DUP1 PUSH2 0x39E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x30B DUP1 PUSH2 0x93 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033000000 ","sourceMap":"140:275:5:-:0;;;191:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;231:7;:27;;-1:-1:-1;231:27:5;-1:-1:-1;231:27:5;;;;;;;;;;140:275;;14:290:7;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;224:31:7;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:7:o;:::-;140:275:5;;;;;;"},"deployedBytecode":{"functionDebugData":{"@gm_248":{"entryPoint":88,"id":248,"parameterSlots":0,"returnSlots":0},"@greet_239":{"entryPoint":217,"id":239,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_string_memory_ptr":{"entryPoint":356,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":563,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":678,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1847:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"94:901:7","statements":[{"body":{"nodeType":"YulBlock","src":"140:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"149:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"152:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"142:6:7"},"nodeType":"YulFunctionCall","src":"142:12:7"},"nodeType":"YulExpressionStatement","src":"142:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"115:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"124:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"111:3:7"},"nodeType":"YulFunctionCall","src":"111:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"136:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"107:3:7"},"nodeType":"YulFunctionCall","src":"107:32:7"},"nodeType":"YulIf","src":"104:52:7"},{"nodeType":"YulVariableDeclaration","src":"165:37:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"192:9:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"179:12:7"},"nodeType":"YulFunctionCall","src":"179:23:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"169:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"211:28:7","value":{"kind":"number","nodeType":"YulLiteral","src":"221:18:7","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"215:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"266:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"275:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"278:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"268:6:7"},"nodeType":"YulFunctionCall","src":"268:12:7"},"nodeType":"YulExpressionStatement","src":"268:12:7"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"254:6:7"},{"name":"_1","nodeType":"YulIdentifier","src":"262:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"251:2:7"},"nodeType":"YulFunctionCall","src":"251:14:7"},"nodeType":"YulIf","src":"248:34:7"},{"nodeType":"YulVariableDeclaration","src":"291:32:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"305:9:7"},{"name":"offset","nodeType":"YulIdentifier","src":"316:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"301:3:7"},"nodeType":"YulFunctionCall","src":"301:22:7"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"295:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"371:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"380:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"383:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"373:6:7"},"nodeType":"YulFunctionCall","src":"373:12:7"},"nodeType":"YulExpressionStatement","src":"373:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"350:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"354:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"346:3:7"},"nodeType":"YulFunctionCall","src":"346:13:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"361:7:7"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"342:3:7"},"nodeType":"YulFunctionCall","src":"342:27:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"335:6:7"},"nodeType":"YulFunctionCall","src":"335:35:7"},"nodeType":"YulIf","src":"332:55:7"},{"nodeType":"YulVariableDeclaration","src":"396:26:7","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"419:2:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"406:12:7"},"nodeType":"YulFunctionCall","src":"406:16:7"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"400:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"445:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"447:16:7"},"nodeType":"YulFunctionCall","src":"447:18:7"},"nodeType":"YulExpressionStatement","src":"447:18:7"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"437:2:7"},{"name":"_1","nodeType":"YulIdentifier","src":"441:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"434:2:7"},"nodeType":"YulFunctionCall","src":"434:10:7"},"nodeType":"YulIf","src":"431:36:7"},{"nodeType":"YulVariableDeclaration","src":"476:76:7","value":{"kind":"number","nodeType":"YulLiteral","src":"486:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"480:2:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"561:23:7","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"581:2:7","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"575:5:7"},"nodeType":"YulFunctionCall","src":"575:9:7"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"565:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"593:71:7","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"615:6:7"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"639:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"643:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"635:3:7"},"nodeType":"YulFunctionCall","src":"635:13:7"},{"name":"_4","nodeType":"YulIdentifier","src":"650:2:7"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"631:3:7"},"nodeType":"YulFunctionCall","src":"631:22:7"},{"kind":"number","nodeType":"YulLiteral","src":"655:2:7","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"627:3:7"},"nodeType":"YulFunctionCall","src":"627:31:7"},{"name":"_4","nodeType":"YulIdentifier","src":"660:2:7"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"623:3:7"},"nodeType":"YulFunctionCall","src":"623:40:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"611:3:7"},"nodeType":"YulFunctionCall","src":"611:53:7"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"597:10:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:22:7","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"725:16:7"},"nodeType":"YulFunctionCall","src":"725:18:7"},"nodeType":"YulExpressionStatement","src":"725:18:7"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"682:10:7"},{"name":"_1","nodeType":"YulIdentifier","src":"694:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"679:2:7"},"nodeType":"YulFunctionCall","src":"679:18:7"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"702:10:7"},{"name":"memPtr","nodeType":"YulIdentifier","src":"714:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"699:2:7"},"nodeType":"YulFunctionCall","src":"699:22:7"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"676:2:7"},"nodeType":"YulFunctionCall","src":"676:46:7"},"nodeType":"YulIf","src":"673:72:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"761:2:7","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"765:10:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"754:6:7"},"nodeType":"YulFunctionCall","src":"754:22:7"},"nodeType":"YulExpressionStatement","src":"754:22:7"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"792:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"800:2:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"785:6:7"},"nodeType":"YulFunctionCall","src":"785:18:7"},"nodeType":"YulExpressionStatement","src":"785:18:7"},{"body":{"nodeType":"YulBlock","src":"849:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"858:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"861:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"851:6:7"},"nodeType":"YulFunctionCall","src":"851:12:7"},"nodeType":"YulExpressionStatement","src":"851:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"826:2:7"},{"name":"_3","nodeType":"YulIdentifier","src":"830:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"822:3:7"},"nodeType":"YulFunctionCall","src":"822:11:7"},{"kind":"number","nodeType":"YulLiteral","src":"835:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"818:3:7"},"nodeType":"YulFunctionCall","src":"818:20:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"840:7:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"815:2:7"},"nodeType":"YulFunctionCall","src":"815:33:7"},"nodeType":"YulIf","src":"812:53:7"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"891:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"899:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"887:3:7"},"nodeType":"YulFunctionCall","src":"887:15:7"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"908:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"912:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"904:3:7"},"nodeType":"YulFunctionCall","src":"904:11:7"},{"name":"_3","nodeType":"YulIdentifier","src":"917:2:7"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"874:12:7"},"nodeType":"YulFunctionCall","src":"874:46:7"},"nodeType":"YulExpressionStatement","src":"874:46:7"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"944:6:7"},{"name":"_3","nodeType":"YulIdentifier","src":"952:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"940:3:7"},"nodeType":"YulFunctionCall","src":"940:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"957:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"936:3:7"},"nodeType":"YulFunctionCall","src":"936:24:7"},{"kind":"number","nodeType":"YulLiteral","src":"962:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"929:6:7"},"nodeType":"YulFunctionCall","src":"929:35:7"},"nodeType":"YulExpressionStatement","src":"929:35:7"},{"nodeType":"YulAssignment","src":"973:16:7","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"983:6:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"973:6:7"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"60:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"71:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"83:6:7","type":""}],"src":"14:981:7"},{"body":{"nodeType":"YulBlock","src":"1121:535:7","statements":[{"nodeType":"YulVariableDeclaration","src":"1131:12:7","value":{"kind":"number","nodeType":"YulLiteral","src":"1141:2:7","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1135:2:7","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:7"},{"name":"_1","nodeType":"YulIdentifier","src":"1170:2:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1152:6:7"},"nodeType":"YulFunctionCall","src":"1152:21:7"},"nodeType":"YulExpressionStatement","src":"1152:21:7"},{"nodeType":"YulVariableDeclaration","src":"1182:27:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1202:6:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1196:5:7"},"nodeType":"YulFunctionCall","src":"1196:13:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1186:6:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1229:9:7"},{"name":"_1","nodeType":"YulIdentifier","src":"1240:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1225:3:7"},"nodeType":"YulFunctionCall","src":"1225:18:7"},{"name":"length","nodeType":"YulIdentifier","src":"1245:6:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1218:6:7"},"nodeType":"YulFunctionCall","src":"1218:34:7"},"nodeType":"YulExpressionStatement","src":"1218:34:7"},{"nodeType":"YulVariableDeclaration","src":"1261:10:7","value":{"kind":"number","nodeType":"YulLiteral","src":"1270:1:7","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1265:1:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"1330:90:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1359:9:7"},{"name":"i","nodeType":"YulIdentifier","src":"1370:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1355:3:7"},"nodeType":"YulFunctionCall","src":"1355:17:7"},{"kind":"number","nodeType":"YulLiteral","src":"1374:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1351:3:7"},"nodeType":"YulFunctionCall","src":"1351:26:7"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1393:6:7"},{"name":"i","nodeType":"YulIdentifier","src":"1401:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1389:3:7"},"nodeType":"YulFunctionCall","src":"1389:14:7"},{"name":"_1","nodeType":"YulIdentifier","src":"1405:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1385:3:7"},"nodeType":"YulFunctionCall","src":"1385:23:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1379:5:7"},"nodeType":"YulFunctionCall","src":"1379:30:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1344:6:7"},"nodeType":"YulFunctionCall","src":"1344:66:7"},"nodeType":"YulExpressionStatement","src":"1344:66:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1291:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"1294:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1288:2:7"},"nodeType":"YulFunctionCall","src":"1288:13:7"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1302:19:7","statements":[{"nodeType":"YulAssignment","src":"1304:15:7","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1313:1:7"},{"name":"_1","nodeType":"YulIdentifier","src":"1316:2:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1309:3:7"},"nodeType":"YulFunctionCall","src":"1309:10:7"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1304:1:7"}]}]},"pre":{"nodeType":"YulBlock","src":"1284:3:7","statements":[]},"src":"1280:140:7"},{"body":{"nodeType":"YulBlock","src":"1454:66:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1483:9:7"},{"name":"length","nodeType":"YulIdentifier","src":"1494:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1479:3:7"},"nodeType":"YulFunctionCall","src":"1479:22:7"},{"kind":"number","nodeType":"YulLiteral","src":"1503:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1475:3:7"},"nodeType":"YulFunctionCall","src":"1475:31:7"},{"kind":"number","nodeType":"YulLiteral","src":"1508:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1468:6:7"},"nodeType":"YulFunctionCall","src":"1468:42:7"},"nodeType":"YulExpressionStatement","src":"1468:42:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1435:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"1438:6:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:7"},"nodeType":"YulFunctionCall","src":"1432:13:7"},"nodeType":"YulIf","src":"1429:91:7"},{"nodeType":"YulAssignment","src":"1529:121:7","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1545:9:7"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1564:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1572:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1560:3:7"},"nodeType":"YulFunctionCall","src":"1560:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"1577:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1556:3:7"},"nodeType":"YulFunctionCall","src":"1556:88:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1541:3:7"},"nodeType":"YulFunctionCall","src":"1541:104:7"},{"kind":"number","nodeType":"YulLiteral","src":"1647:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1537:3:7"},"nodeType":"YulFunctionCall","src":"1537:113:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1529:4:7"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1090:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1101:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1112:4:7","type":""}],"src":"1000:656:7"},{"body":{"nodeType":"YulBlock","src":"1693:152:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1710:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1713:77:7","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1703:6:7"},"nodeType":"YulFunctionCall","src":"1703:88:7"},"nodeType":"YulExpressionStatement","src":"1703:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1807:1:7","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1810:4:7","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1800:6:7"},"nodeType":"YulFunctionCall","src":"1800:15:7"},"nodeType":"YulExpressionStatement","src":"1800:15:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1831:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1834:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1824:6:7"},"nodeType":"YulFunctionCall","src":"1824:15:7"},"nodeType":"YulExpressionStatement","src":"1824:15:7"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1661:184:7"}]},"contents":"{\n { }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063c0129d431461003b578063ead710c414610045575b600080fd5b610043610058565b005b610043610053366004610164565b6100d9565b60008054604080517fc0129d43000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263c0129d439260048084019382900301818387803b1580156100bf57600080fd5b505af11580156100d3573d6000803e3d6000fd5b50505050565b6000546040517fead710c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ead710c49061012f908490600401610233565b600060405180830381600087803b15801561014957600080fd5b505af115801561015d573d6000803e3d6000fd5b5050505050565b60006020828403121561017657600080fd5b813567ffffffffffffffff8082111561018e57600080fd5b818401915084601f8301126101a257600080fd5b8135818111156101b4576101b46102a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101fa576101fa6102a6565b8160405282815287602084870101111561021357600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561026057858101830151858201604001528201610244565b81811115610272576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220bfa72ed9ea0d57905e92811e328260534806dbdb8ad58675306b2582254f247564736f6c63430008070033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC0129D43 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xEAD710C4 EQ PUSH2 0x45 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x58 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x43 PUSH2 0x53 CALLDATASIZE PUSH1 0x4 PUSH2 0x164 JUMP JUMPDEST PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xC0129D4300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xC0129D43 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0xEAD710C400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xEAD710C4 SWAP1 PUSH2 0x12F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x233 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B4 PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1FA JUMPI PUSH2 0x1FA PUSH2 0x2A6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x260 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x244 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x272 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xA7 0x2E 0xD9 0xEA 0xD JUMPI SWAP1 0x5E SWAP3 DUP2 0x1E ORIGIN DUP3 PUSH1 0x53 BASEFEE MOD 0xDB 0xDB DUP11 0xD5 DUP7 PUSH22 0x306B2582254F247564736F6C63430008070033000000 ","sourceMap":"140:275:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;363:50;;;:::i;:::-;;271:86;;;;;;:::i;:::-;;:::i;363:50::-;394:7;;;:12;;;;;;;;:7;;;;;:10;;:12;;;;;;;;;;:7;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;363:50::o;271:86::-;327:7;;:23;;;;;:7;;;;;:13;;:23;;341:8;;327:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;271:86;:::o;14:981:7:-;83:6;136:2;124:9;115:7;111:23;107:32;104:52;;;152:1;149;142:12;104:52;192:9;179:23;221:18;262:2;254:6;251:14;248:34;;;278:1;275;268:12;248:34;316:6;305:9;301:22;291:32;;361:7;354:4;350:2;346:13;342:27;332:55;;383:1;380;373:12;332:55;419:2;406:16;441:2;437;434:10;431:36;;;447:18;;:::i;:::-;581:2;575:9;643:4;635:13;;486:66;631:22;;;655:2;627:31;623:40;611:53;;;679:18;;;699:22;;;676:46;673:72;;;725:18;;:::i;:::-;765:10;761:2;754:22;800:2;792:6;785:18;840:7;835:2;830;826;822:11;818:20;815:33;812:53;;;861:1;858;851:12;812:53;917:2;912;908;904:11;899:2;891:6;887:15;874:46;962:1;940:15;;;957:2;936:24;929:35;;;;-1:-1:-1;944:6:7;14:981;-1:-1:-1;;;;;14:981:7:o;1000:656::-;1112:4;1141:2;1170;1159:9;1152:21;1202:6;1196:13;1245:6;1240:2;1229:9;1225:18;1218:34;1270:1;1280:140;1294:6;1291:1;1288:13;1280:140;;;1389:14;;;1385:23;;1379:30;1355:17;;;1374:2;1351:26;1344:66;1309:10;;1280:140;;;1438:6;1435:1;1432:13;1429:91;;;1508:1;1503:2;1494:6;1483:9;1479:22;1475:31;1468:42;1429:91;-1:-1:-1;1572:2:7;1560:15;1577:66;1556:88;1541:104;;;;1647:2;1537:113;;1000:656;-1:-1:-1;;;1000:656:7:o;1661:184::-;1713:77;1710:1;1703:88;1810:4;1807:1;1800:15;1834:4;1831:1;1824:15"}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_greeter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"gm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"greeting\",\"type\":\"string\"}],\"name\":\"greet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/utils/GreeterTest.sol\":\"User\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"lib/ds-test/src/test.sol\":{\"keccak256\":\"0x529f30c5939d75689f6a982f7f96b8898bed30bd90ec5b385b57cab681e12b00\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://89075d5a96e87acef1d00cf556b409d1836728ec2e92f5629ceb5cae3d1e4354\",\"dweb:/ipfs/QmPAViJrxffEDns9GEMVSAzmr3soAzfrEg1CVuovwmNfnt\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"src/Greeter.sol\":{\"keccak256\":\"0xc34bd8409a4fa4a474f29c6cb7d076cf9379c9c79e257c5cda7e5d114023f0f6\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://9db4f0c61754c54fd3b3ae58dfaf72865f8134e96959f7fc295b1a8e3b7511d7\",\"dweb:/ipfs/QmPuGbtNJ9rRaC7kFWqy76A9sfcGGcYAps6yPRrW28v4xd\"]},\"src/test/utils/GreeterTest.sol\":{\"keccak256\":\"0xc49253ed5e0fc9185d066993945370493f2bb08f00a997680b112fe6f9b5d455\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://d5ff89c2bb371b6ddfb66b905b3c3597aa080e1ca5c1c1303e529f2c8fc98a67\",\"dweb:/ipfs/Qmc28bfatf99DDv6P8dpdo5Zsw7QdSoC1N4FV1TJGZF5Vx\"]},\"src/test/utils/Hevm.sol\":{\"keccak256\":\"0xd477fc888e2bdbaf45c8babf175c93127478ae74543556ffebb9877a8dd823a9\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://7fb2a52878484cea3793a92ae34b3a9f3e77f976eda7c7f91e2edb5b9ba38be3\",\"dweb:/ipfs/Qmf7JsG4uMjd7WX1h8rBPcpXv1m4mF3sdrr6VYzKj1SXUX\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":215,"contract":"src/test/utils/GreeterTest.sol:User","label":"greeter","offset":0,"slot":"0","type":"t_contract(Greeter)60"}],"types":{"t_contract(Greeter)60":{"encoding":"inplace","label":"contract Greeter","numberOfBytes":"20"}}}}},"src/test/utils/Hevm.sol":{"Hevm":{"abi":[{"inputs":[{"internalType":"string[]","name":"","type":"string[]"}],"name":"ffi","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"roll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"c","type":"address"},{"internalType":"bytes32","name":"loc","type":"bytes32"},{"internalType":"bytes32","name":"val","type":"bytes32"}],"name":"store","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"warp","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"metadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"loc\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/utils/Hevm.sol\":\"Hevm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\"]},\"sources\":{\"src/test/utils/Hevm.sol\":{\"keccak256\":\"0xd477fc888e2bdbaf45c8babf175c93127478ae74543556ffebb9877a8dd823a9\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://7fb2a52878484cea3793a92ae34b3a9f3e77f976eda7c7f91e2edb5b9ba38be3\",\"dweb:/ipfs/Qmf7JsG4uMjd7WX1h8rBPcpXv1m4mF3sdrr6VYzKj1SXUX\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}},"sources":{"lib/ds-test/src/test.sol":{"ast":{"absolutePath":"lib/ds-test/src/test.sol","exportedSymbols":{"DSTest":[2124]},"id":2125,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":445,"literals":["solidity",">=","0.4",".23"],"nodeType":"PragmaDirective","src":"689:25:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2124,"linearizedBaseContracts":[2124],"name":"DSTest","nameLocation":"725:6:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":449,"name":"log","nameLocation":"744:3:0","nodeType":"EventDefinition","parameters":{"id":448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":449,"src":"768:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":446,"name":"string","nodeType":"ElementaryTypeName","src":"768:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"767:8:0"},"src":"738:38:0"},{"anonymous":false,"id":453,"name":"logs","nameLocation":"787:4:0","nodeType":"EventDefinition","parameters":{"id":452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":453,"src":"811:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":450,"name":"bytes","nodeType":"ElementaryTypeName","src":"811:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"810:7:0"},"src":"781:37:0"},{"anonymous":false,"id":457,"name":"log_address","nameLocation":"830:11:0","nodeType":"EventDefinition","parameters":{"id":456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":455,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":457,"src":"854:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"853:9:0"},"src":"824:39:0"},{"anonymous":false,"id":461,"name":"log_bytes32","nameLocation":"874:11:0","nodeType":"EventDefinition","parameters":{"id":460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":459,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":461,"src":"898:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":458,"name":"bytes32","nodeType":"ElementaryTypeName","src":"898:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"897:9:0"},"src":"868:39:0"},{"anonymous":false,"id":465,"name":"log_int","nameLocation":"918:7:0","nodeType":"EventDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":465,"src":"942:3:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":462,"name":"int","nodeType":"ElementaryTypeName","src":"942:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"941:5:0"},"src":"912:35:0"},{"anonymous":false,"id":469,"name":"log_uint","nameLocation":"958:8:0","nodeType":"EventDefinition","parameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":469,"src":"982:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":466,"name":"uint","nodeType":"ElementaryTypeName","src":"982:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"981:6:0"},"src":"952:36:0"},{"anonymous":false,"id":473,"name":"log_bytes","nameLocation":"999:9:0","nodeType":"EventDefinition","parameters":{"id":472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":473,"src":"1023:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":470,"name":"bytes","nodeType":"ElementaryTypeName","src":"1023:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1022:7:0"},"src":"993:37:0"},{"anonymous":false,"id":477,"name":"log_string","nameLocation":"1041:10:0","nodeType":"EventDefinition","parameters":{"id":476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"indexed":false,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":477,"src":"1065:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":474,"name":"string","nodeType":"ElementaryTypeName","src":"1065:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1064:8:0"},"src":"1035:38:0"},{"anonymous":false,"id":483,"name":"log_named_address","nameLocation":"1085:17:0","nodeType":"EventDefinition","parameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":479,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1116:3:0","nodeType":"VariableDeclaration","scope":483,"src":"1109:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":478,"name":"string","nodeType":"ElementaryTypeName","src":"1109:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":481,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1129:3:0","nodeType":"VariableDeclaration","scope":483,"src":"1121:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":480,"name":"address","nodeType":"ElementaryTypeName","src":"1121:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1108:25:0"},"src":"1079:55:0"},{"anonymous":false,"id":489,"name":"log_named_bytes32","nameLocation":"1145:17:0","nodeType":"EventDefinition","parameters":{"id":488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":485,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1176:3:0","nodeType":"VariableDeclaration","scope":489,"src":"1169:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":484,"name":"string","nodeType":"ElementaryTypeName","src":"1169:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":487,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1189:3:0","nodeType":"VariableDeclaration","scope":489,"src":"1181:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1181:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1168:25:0"},"src":"1139:55:0"},{"anonymous":false,"id":497,"name":"log_named_decimal_int","nameLocation":"1205:21:0","nodeType":"EventDefinition","parameters":{"id":496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":491,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1236:3:0","nodeType":"VariableDeclaration","scope":497,"src":"1229:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":490,"name":"string","nodeType":"ElementaryTypeName","src":"1229:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":493,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1245:3:0","nodeType":"VariableDeclaration","scope":497,"src":"1241:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":492,"name":"int","nodeType":"ElementaryTypeName","src":"1241:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":495,"indexed":false,"mutability":"mutable","name":"decimals","nameLocation":"1255:8:0","nodeType":"VariableDeclaration","scope":497,"src":"1250:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":494,"name":"uint","nodeType":"ElementaryTypeName","src":"1250:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1228:36:0"},"src":"1199:66:0"},{"anonymous":false,"id":505,"name":"log_named_decimal_uint","nameLocation":"1276:22:0","nodeType":"EventDefinition","parameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":499,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1307:3:0","nodeType":"VariableDeclaration","scope":505,"src":"1300:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":498,"name":"string","nodeType":"ElementaryTypeName","src":"1300:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":501,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1317:3:0","nodeType":"VariableDeclaration","scope":505,"src":"1312:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":500,"name":"uint","nodeType":"ElementaryTypeName","src":"1312:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":503,"indexed":false,"mutability":"mutable","name":"decimals","nameLocation":"1327:8:0","nodeType":"VariableDeclaration","scope":505,"src":"1322:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":502,"name":"uint","nodeType":"ElementaryTypeName","src":"1322:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1299:37:0"},"src":"1270:67:0"},{"anonymous":false,"id":511,"name":"log_named_int","nameLocation":"1348:13:0","nodeType":"EventDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1379:3:0","nodeType":"VariableDeclaration","scope":511,"src":"1372:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":506,"name":"string","nodeType":"ElementaryTypeName","src":"1372:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":509,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1388:3:0","nodeType":"VariableDeclaration","scope":511,"src":"1384:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":508,"name":"int","nodeType":"ElementaryTypeName","src":"1384:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1371:21:0"},"src":"1342:51:0"},{"anonymous":false,"id":517,"name":"log_named_uint","nameLocation":"1404:14:0","nodeType":"EventDefinition","parameters":{"id":516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":513,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1435:3:0","nodeType":"VariableDeclaration","scope":517,"src":"1428:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":512,"name":"string","nodeType":"ElementaryTypeName","src":"1428:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":515,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1445:3:0","nodeType":"VariableDeclaration","scope":517,"src":"1440:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":514,"name":"uint","nodeType":"ElementaryTypeName","src":"1440:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:22:0"},"src":"1398:52:0"},{"anonymous":false,"id":523,"name":"log_named_bytes","nameLocation":"1461:15:0","nodeType":"EventDefinition","parameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1492:3:0","nodeType":"VariableDeclaration","scope":523,"src":"1485:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":518,"name":"string","nodeType":"ElementaryTypeName","src":"1485:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":521,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1503:3:0","nodeType":"VariableDeclaration","scope":523,"src":"1497:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":520,"name":"bytes","nodeType":"ElementaryTypeName","src":"1497:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1484:23:0"},"src":"1455:53:0"},{"anonymous":false,"id":529,"name":"log_named_string","nameLocation":"1519:16:0","nodeType":"EventDefinition","parameters":{"id":528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":525,"indexed":false,"mutability":"mutable","name":"key","nameLocation":"1550:3:0","nodeType":"VariableDeclaration","scope":529,"src":"1543:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":524,"name":"string","nodeType":"ElementaryTypeName","src":"1543:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":527,"indexed":false,"mutability":"mutable","name":"val","nameLocation":"1562:3:0","nodeType":"VariableDeclaration","scope":529,"src":"1555:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":526,"name":"string","nodeType":"ElementaryTypeName","src":"1555:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1542:24:0"},"src":"1513:54:0"},{"constant":false,"functionSelector":"fa7626d4","id":532,"mutability":"mutable","name":"IS_TEST","nameLocation":"1585:7:0","nodeType":"VariableDeclaration","scope":2124,"src":"1573:26:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":530,"name":"bool","nodeType":"ElementaryTypeName","src":"1573:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":{"hexValue":"74727565","id":531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1595:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"visibility":"public"},{"constant":false,"functionSelector":"ba414fa6","id":534,"mutability":"mutable","name":"failed","nameLocation":"1617:6:0","nodeType":"VariableDeclaration","scope":2124,"src":"1605:18:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":533,"name":"bool","nodeType":"ElementaryTypeName","src":"1605:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":true,"id":551,"mutability":"constant","name":"HEVM_ADDRESS","nameLocation":"1647:12:0","nodeType":"VariableDeclaration","scope":2124,"src":"1630:104:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":535,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"6865766d20636865617420636f6465","id":545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1712:17:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""},"value":"hevm cheat code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d","typeString":"literal_string \"hevm cheat code\""}],"id":544,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1702:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1702:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1694:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":542,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:0","typeDescriptions":{}}},"id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1694:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1686:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":540,"name":"uint160","nodeType":"ElementaryTypeName","src":"1686:7:0","typeDescriptions":{}}},"id":548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1686:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1678:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":538,"name":"bytes20","nodeType":"ElementaryTypeName","src":"1678:7:0","typeDescriptions":{}}},"id":549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1678:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1670:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"1670:7:0","typeDescriptions":{}}},"id":550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1670:64:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"body":{"id":554,"nodeType":"Block","src":"1762:6:0","statements":[{"id":553,"nodeType":"PlaceholderStatement","src":"1764:1:0"}]},"id":555,"name":"mayRevert","nameLocation":"1750:9:0","nodeType":"ModifierDefinition","parameters":{"id":552,"nodeType":"ParameterList","parameters":[],"src":"1759:2:0"},"src":"1741:27:0","virtual":false,"visibility":"internal"},{"body":{"id":560,"nodeType":"Block","src":"1806:6:0","statements":[{"id":559,"nodeType":"PlaceholderStatement","src":"1808:1:0"}]},"id":561,"name":"testopts","nameLocation":"1782:8:0","nodeType":"ModifierDefinition","parameters":{"id":558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":561,"src":"1791:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":556,"name":"string","nodeType":"ElementaryTypeName","src":"1791:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1790:15:0"},"src":"1773:39:0","virtual":false,"visibility":"internal"},{"body":{"id":568,"nodeType":"Block","src":"1843:30:0","statements":[{"expression":{"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":564,"name":"failed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"1853:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1862:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1853:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":567,"nodeType":"ExpressionStatement","src":"1853:13:0"}]},"id":569,"implemented":true,"kind":"function","modifiers":[],"name":"fail","nameLocation":"1827:4:0","nodeType":"FunctionDefinition","parameters":{"id":562,"nodeType":"ParameterList","parameters":[],"src":"1831:2:0"},"returnParameters":{"id":563,"nodeType":"ParameterList","parameters":[],"src":"1843:0:0"},"scope":2124,"src":"1818:55:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":589,"nodeType":"Block","src":"1899:141:0","statements":[{"assignments":[572],"declarations":[{"constant":false,"id":572,"mutability":"mutable","name":"startGas","nameLocation":"1914:8:0","nodeType":"VariableDeclaration","scope":589,"src":"1909:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":571,"name":"uint","nodeType":"ElementaryTypeName","src":"1909:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":575,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":573,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1925:7:0","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1925:9:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1909:25:0"},{"id":576,"nodeType":"PlaceholderStatement","src":"1944:1:0"},{"assignments":[578],"declarations":[{"constant":false,"id":578,"mutability":"mutable","name":"endGas","nameLocation":"1960:6:0","nodeType":"VariableDeclaration","scope":589,"src":"1955:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":577,"name":"uint","nodeType":"ElementaryTypeName","src":"1955:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":581,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":579,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1969:7:0","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1969:9:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1955:23:0"},{"eventCall":{"arguments":[{"hexValue":"676173","id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2008:5:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_4498c2139ad6cf2beef3ae7bec34c4856d471c8680dfd28d553f117df74df6b7","typeString":"literal_string \"gas\""},"value":"gas"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":584,"name":"startGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":572,"src":"2015:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":585,"name":"endGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"2026:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2015:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4498c2139ad6cf2beef3ae7bec34c4856d471c8680dfd28d553f117df74df6b7","typeString":"literal_string \"gas\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":582,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"1993:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1993:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":588,"nodeType":"EmitStatement","src":"1988:45:0"}]},"id":590,"name":"logs_gas","nameLocation":"1888:8:0","nodeType":"ModifierDefinition","parameters":{"id":570,"nodeType":"ParameterList","parameters":[],"src":"1896:2:0"},"src":"1879:161:0","virtual":false,"visibility":"internal"},{"body":{"id":606,"nodeType":"Block","src":"2091:112:0","statements":[{"condition":{"id":596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2105:10:0","subExpression":{"id":595,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"2106:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":605,"nodeType":"IfStatement","src":"2101:96:0","trueBody":{"id":604,"nodeType":"Block","src":"2117:80:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a20417373657274696f6e204661696c6564","id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2140:25:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc8bd7d7034d6f139e4d0b1fc61bcb3025672e801833991d94fa7390aceb1687","typeString":"literal_string \"Error: Assertion Failed\""},"value":"Error: Assertion Failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cc8bd7d7034d6f139e4d0b1fc61bcb3025672e801833991d94fa7390aceb1687","typeString":"literal_string \"Error: Assertion Failed\""}],"id":597,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2136:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2136:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":600,"nodeType":"EmitStatement","src":"2131:35:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":601,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"2180:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2180:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":603,"nodeType":"ExpressionStatement","src":"2180:6:0"}]}}]},"id":607,"implemented":true,"kind":"function","modifiers":[],"name":"assertTrue","nameLocation":"2055:10:0","nodeType":"FunctionDefinition","parameters":{"id":593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"condition","nameLocation":"2071:9:0","nodeType":"VariableDeclaration","scope":607,"src":"2066:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":591,"name":"bool","nodeType":"ElementaryTypeName","src":"2066:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2065:16:0"},"returnParameters":{"id":594,"nodeType":"ParameterList","parameters":[],"src":"2091:0:0"},"scope":2124,"src":"2046:157:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":627,"nodeType":"Block","src":"2273:127:0","statements":[{"condition":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2287:10:0","subExpression":{"id":614,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2288:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":626,"nodeType":"IfStatement","src":"2283:111:0","trueBody":{"id":625,"nodeType":"Block","src":"2299:95:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2335:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":618,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"2344:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":616,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"2318:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2318:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":620,"nodeType":"EmitStatement","src":"2313:35:0"},{"expression":{"arguments":[{"id":622,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"2373:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":621,"name":"assertTrue","nodeType":"Identifier","overloadedDeclarations":[607,628],"referencedDeclaration":607,"src":"2362:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2362:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":624,"nodeType":"ExpressionStatement","src":"2362:21:0"}]}}]},"id":628,"implemented":true,"kind":"function","modifiers":[],"name":"assertTrue","nameLocation":"2218:10:0","nodeType":"FunctionDefinition","parameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"condition","nameLocation":"2234:9:0","nodeType":"VariableDeclaration","scope":628,"src":"2229:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":608,"name":"bool","nodeType":"ElementaryTypeName","src":"2229:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":611,"mutability":"mutable","name":"err","nameLocation":"2259:3:0","nodeType":"VariableDeclaration","scope":628,"src":"2245:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":610,"name":"string","nodeType":"ElementaryTypeName","src":"2245:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2228:35:0"},"returnParameters":{"id":613,"nodeType":"ParameterList","parameters":[],"src":"2273:0:0"},"scope":2124,"src":"2209:191:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":657,"nodeType":"Block","src":"2455:228:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":635,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"2469:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":636,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"2474:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2469:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":656,"nodeType":"IfStatement","src":"2465:212:0","trueBody":{"id":655,"nodeType":"Block","src":"2477:200:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464726573735d","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2500:39:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fc6ddd126630392f6812bf6b1418b5ec062ae84acc54ee474317255c7d57017","typeString":"literal_string \"Error: a == b not satisfied [address]\""},"value":"Error: a == b not satisfied [address]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9fc6ddd126630392f6812bf6b1418b5ec062ae84acc54ee474317255c7d57017","typeString":"literal_string \"Error: a == b not satisfied [address]\""}],"id":638,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2496:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2496:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":641,"nodeType":"EmitStatement","src":"2491:49:0"},{"eventCall":{"arguments":[{"hexValue":"20204578706563746564","id":643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2577:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},"value":" Expected"},{"id":644,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"2591:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":642,"name":"log_named_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"2559:17:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2559:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":646,"nodeType":"EmitStatement","src":"2554:39:0"},{"eventCall":{"arguments":[{"hexValue":"2020202041637475616c","id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2630:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},"value":" Actual"},{"id":649,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"2644:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},{"typeIdentifier":"t_address","typeString":"address"}],"id":647,"name":"log_named_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"2612:17:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address)"}},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2612:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":651,"nodeType":"EmitStatement","src":"2607:39:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":652,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"2660:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2660:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":654,"nodeType":"ExpressionStatement","src":"2660:6:0"}]}}]},"id":658,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"2415:8:0","nodeType":"FunctionDefinition","parameters":{"id":633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"a","nameLocation":"2432:1:0","nodeType":"VariableDeclaration","scope":658,"src":"2424:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":629,"name":"address","nodeType":"ElementaryTypeName","src":"2424:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"b","nameLocation":"2443:1:0","nodeType":"VariableDeclaration","scope":658,"src":"2435:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2423:22:0"},"returnParameters":{"id":634,"nodeType":"ParameterList","parameters":[],"src":"2455:0:0"},"scope":2124,"src":"2406:277:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":682,"nodeType":"Block","src":"2756:117:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":667,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":660,"src":"2770:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":668,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":662,"src":"2775:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2770:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":681,"nodeType":"IfStatement","src":"2766:101:0","trueBody":{"id":680,"nodeType":"Block","src":"2778:89:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2815:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":672,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":664,"src":"2824:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":670,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"2797:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2797:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":674,"nodeType":"EmitStatement","src":"2792:36:0"},{"expression":{"arguments":[{"id":676,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":660,"src":"2851:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":677,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":662,"src":"2854:1:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":675,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":658,"src":"2842:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2842:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":679,"nodeType":"ExpressionStatement","src":"2842:14:0"}]}}]},"id":683,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"2697:8:0","nodeType":"FunctionDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"a","nameLocation":"2714:1:0","nodeType":"VariableDeclaration","scope":683,"src":"2706:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":659,"name":"address","nodeType":"ElementaryTypeName","src":"2706:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":662,"mutability":"mutable","name":"b","nameLocation":"2725:1:0","nodeType":"VariableDeclaration","scope":683,"src":"2717:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"2717:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":664,"mutability":"mutable","name":"err","nameLocation":"2742:3:0","nodeType":"VariableDeclaration","scope":683,"src":"2728:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":663,"name":"string","nodeType":"ElementaryTypeName","src":"2728:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2705:41:0"},"returnParameters":{"id":666,"nodeType":"ParameterList","parameters":[],"src":"2756:0:0"},"scope":2124,"src":"2688:185:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":712,"nodeType":"Block","src":"2928:228:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":690,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"2942:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":691,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"2947:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2942:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":711,"nodeType":"IfStatement","src":"2938:212:0","trueBody":{"id":710,"nodeType":"Block","src":"2950:200:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b627974657333325d","id":694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2973:39:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_6605dedc99dd4e0a76d4678a99cc6956499fe2b523ca6525b248ca3582cef3ef","typeString":"literal_string \"Error: a == b not satisfied [bytes32]\""},"value":"Error: a == b not satisfied [bytes32]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6605dedc99dd4e0a76d4678a99cc6956499fe2b523ca6525b248ca3582cef3ef","typeString":"literal_string \"Error: a == b not satisfied [bytes32]\""}],"id":693,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2969:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":696,"nodeType":"EmitStatement","src":"2964:49:0"},{"eventCall":{"arguments":[{"hexValue":"20204578706563746564","id":698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3050:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},"value":" Expected"},{"id":699,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"3064:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":697,"name":"log_named_bytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":489,"src":"3032:17:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (string memory,bytes32)"}},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3032:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":701,"nodeType":"EmitStatement","src":"3027:39:0"},{"eventCall":{"arguments":[{"hexValue":"2020202041637475616c","id":703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3103:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},"value":" Actual"},{"id":704,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"3117:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":702,"name":"log_named_bytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":489,"src":"3085:17:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (string memory,bytes32)"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3085:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":706,"nodeType":"EmitStatement","src":"3080:39:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":707,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"3133:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3133:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":709,"nodeType":"ExpressionStatement","src":"3133:6:0"}]}}]},"id":713,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"2888:8:0","nodeType":"FunctionDefinition","parameters":{"id":688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":685,"mutability":"mutable","name":"a","nameLocation":"2905:1:0","nodeType":"VariableDeclaration","scope":713,"src":"2897:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":684,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2897:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":687,"mutability":"mutable","name":"b","nameLocation":"2916:1:0","nodeType":"VariableDeclaration","scope":713,"src":"2908:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2908:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2896:22:0"},"returnParameters":{"id":689,"nodeType":"ParameterList","parameters":[],"src":"2928:0:0"},"scope":2124,"src":"2879:277:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":737,"nodeType":"Block","src":"3229:117:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":722,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":715,"src":"3243:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":723,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"3248:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3243:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":736,"nodeType":"IfStatement","src":"3239:101:0","trueBody":{"id":735,"nodeType":"Block","src":"3251:89:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3288:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":727,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"3297:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":725,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"3270:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3270:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":729,"nodeType":"EmitStatement","src":"3265:36:0"},{"expression":{"arguments":[{"id":731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":715,"src":"3324:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":732,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"3327:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":730,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":713,"src":"3315:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3315:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":734,"nodeType":"ExpressionStatement","src":"3315:14:0"}]}}]},"id":738,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"3170:8:0","nodeType":"FunctionDefinition","parameters":{"id":720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":715,"mutability":"mutable","name":"a","nameLocation":"3187:1:0","nodeType":"VariableDeclaration","scope":738,"src":"3179:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":714,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3179:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":717,"mutability":"mutable","name":"b","nameLocation":"3198:1:0","nodeType":"VariableDeclaration","scope":738,"src":"3190:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":716,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3190:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":719,"mutability":"mutable","name":"err","nameLocation":"3215:3:0","nodeType":"VariableDeclaration","scope":738,"src":"3201:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":718,"name":"string","nodeType":"ElementaryTypeName","src":"3201:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3178:41:0"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"3229:0:0"},"scope":2124,"src":"3161:185:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":750,"nodeType":"Block","src":"3402:31:0","statements":[{"expression":{"arguments":[{"id":746,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":740,"src":"3421:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":747,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"3424:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":745,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":713,"src":"3412:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3412:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":749,"nodeType":"ExpressionStatement","src":"3412:14:0"}]},"id":751,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq32","nameLocation":"3360:10:0","nodeType":"FunctionDefinition","parameters":{"id":743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"a","nameLocation":"3379:1:0","nodeType":"VariableDeclaration","scope":751,"src":"3371:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3371:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":742,"mutability":"mutable","name":"b","nameLocation":"3390:1:0","nodeType":"VariableDeclaration","scope":751,"src":"3382:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":741,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3382:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3370:22:0"},"returnParameters":{"id":744,"nodeType":"ParameterList","parameters":[],"src":"3402:0:0"},"scope":2124,"src":"3351:82:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":766,"nodeType":"Block","src":"3508:36:0","statements":[{"expression":{"arguments":[{"id":761,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"3527:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":762,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"3530:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":763,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"3533:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":760,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":738,"src":"3518:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes32,bytes32,string memory)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3518:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":765,"nodeType":"ExpressionStatement","src":"3518:19:0"}]},"id":767,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq32","nameLocation":"3447:10:0","nodeType":"FunctionDefinition","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":753,"mutability":"mutable","name":"a","nameLocation":"3466:1:0","nodeType":"VariableDeclaration","scope":767,"src":"3458:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":752,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3458:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":755,"mutability":"mutable","name":"b","nameLocation":"3477:1:0","nodeType":"VariableDeclaration","scope":767,"src":"3469:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":754,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3469:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"err","nameLocation":"3494:3:0","nodeType":"VariableDeclaration","scope":767,"src":"3480:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":756,"name":"string","nodeType":"ElementaryTypeName","src":"3480:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3457:41:0"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"3508:0:0"},"scope":2124,"src":"3438:106:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":796,"nodeType":"Block","src":"3591:216:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":769,"src":"3605:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":775,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":771,"src":"3610:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3605:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":795,"nodeType":"IfStatement","src":"3601:200:0","trueBody":{"id":794,"nodeType":"Block","src":"3613:188:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b696e745d","id":778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3636:35:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c510d1b16a7b86013fe25431f855bed96290957b4566f7ab53d5bf1855a3a81","typeString":"literal_string \"Error: a == b not satisfied [int]\""},"value":"Error: a == b not satisfied [int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0c510d1b16a7b86013fe25431f855bed96290957b4566f7ab53d5bf1855a3a81","typeString":"literal_string \"Error: a == b not satisfied [int]\""}],"id":777,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"3632:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3632:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":780,"nodeType":"EmitStatement","src":"3627:45:0"},{"eventCall":{"arguments":[{"hexValue":"20204578706563746564","id":782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3705:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},"value":" Expected"},{"id":783,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":771,"src":"3719:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":781,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"3691:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3691:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":785,"nodeType":"EmitStatement","src":"3686:35:0"},{"eventCall":{"arguments":[{"hexValue":"2020202041637475616c","id":787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3754:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},"value":" Actual"},{"id":788,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":769,"src":"3768:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":786,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"3740:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3740:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":790,"nodeType":"EmitStatement","src":"3735:35:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":791,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"3784:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3784:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":793,"nodeType":"ExpressionStatement","src":"3784:6:0"}]}}]},"id":797,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"3559:8:0","nodeType":"FunctionDefinition","parameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":769,"mutability":"mutable","name":"a","nameLocation":"3572:1:0","nodeType":"VariableDeclaration","scope":797,"src":"3568:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":768,"name":"int","nodeType":"ElementaryTypeName","src":"3568:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":771,"mutability":"mutable","name":"b","nameLocation":"3579:1:0","nodeType":"VariableDeclaration","scope":797,"src":"3575:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":770,"name":"int","nodeType":"ElementaryTypeName","src":"3575:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"3567:14:0"},"returnParameters":{"id":773,"nodeType":"ParameterList","parameters":[],"src":"3591:0:0"},"scope":2124,"src":"3550:257:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":821,"nodeType":"Block","src":"3872:116:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"3886:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":807,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"3891:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3886:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":820,"nodeType":"IfStatement","src":"3882:100:0","trueBody":{"id":819,"nodeType":"Block","src":"3894:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3930:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":811,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"3939:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":809,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"3913:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3913:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":813,"nodeType":"EmitStatement","src":"3908:35:0"},{"expression":{"arguments":[{"id":815,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"3966:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":816,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"3969:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":814,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":797,"src":"3957:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$returns$__$","typeString":"function (int256,int256)"}},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3957:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":818,"nodeType":"ExpressionStatement","src":"3957:14:0"}]}}]},"id":822,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"3821:8:0","nodeType":"FunctionDefinition","parameters":{"id":804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"a","nameLocation":"3834:1:0","nodeType":"VariableDeclaration","scope":822,"src":"3830:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":798,"name":"int","nodeType":"ElementaryTypeName","src":"3830:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":801,"mutability":"mutable","name":"b","nameLocation":"3841:1:0","nodeType":"VariableDeclaration","scope":822,"src":"3837:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":800,"name":"int","nodeType":"ElementaryTypeName","src":"3837:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":803,"mutability":"mutable","name":"err","nameLocation":"3858:3:0","nodeType":"VariableDeclaration","scope":822,"src":"3844:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":802,"name":"string","nodeType":"ElementaryTypeName","src":"3844:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3829:33:0"},"returnParameters":{"id":805,"nodeType":"ParameterList","parameters":[],"src":"3872:0:0"},"scope":2124,"src":"3812:176:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":851,"nodeType":"Block","src":"4036:219:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":829,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"4050:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":830,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"4055:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4050:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":850,"nodeType":"IfStatement","src":"4046:203:0","trueBody":{"id":849,"nodeType":"Block","src":"4058:191:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e745d","id":833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4081:36:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_3bb05d3ba160a011999668447ff4a7cdd52bf87aeb1d7b9b284ef23b37a2b183","typeString":"literal_string \"Error: a == b not satisfied [uint]\""},"value":"Error: a == b not satisfied [uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3bb05d3ba160a011999668447ff4a7cdd52bf87aeb1d7b9b284ef23b37a2b183","typeString":"literal_string \"Error: a == b not satisfied [uint]\""}],"id":832,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"4077:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4077:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":835,"nodeType":"EmitStatement","src":"4072:46:0"},{"eventCall":{"arguments":[{"hexValue":"20204578706563746564","id":837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4152:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},"value":" Expected"},{"id":838,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"4166:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":836,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"4137:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4137:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":840,"nodeType":"EmitStatement","src":"4132:36:0"},{"eventCall":{"arguments":[{"hexValue":"2020202041637475616c","id":842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4202:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},"value":" Actual"},{"id":843,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"4216:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":841,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"4187:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4187:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":845,"nodeType":"EmitStatement","src":"4182:36:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":846,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"4232:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4232:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":848,"nodeType":"ExpressionStatement","src":"4232:6:0"}]}}]},"id":852,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"4002:8:0","nodeType":"FunctionDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":824,"mutability":"mutable","name":"a","nameLocation":"4016:1:0","nodeType":"VariableDeclaration","scope":852,"src":"4011:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":823,"name":"uint","nodeType":"ElementaryTypeName","src":"4011:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":826,"mutability":"mutable","name":"b","nameLocation":"4024:1:0","nodeType":"VariableDeclaration","scope":852,"src":"4019:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint","nodeType":"ElementaryTypeName","src":"4019:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4010:16:0"},"returnParameters":{"id":828,"nodeType":"ParameterList","parameters":[],"src":"4036:0:0"},"scope":2124,"src":"3993:262:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":876,"nodeType":"Block","src":"4322:116:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":861,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"4336:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":862,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"4341:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4336:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":875,"nodeType":"IfStatement","src":"4332:100:0","trueBody":{"id":874,"nodeType":"Block","src":"4344:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4380:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":866,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"4389:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":864,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"4363:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4363:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":868,"nodeType":"EmitStatement","src":"4358:35:0"},{"expression":{"arguments":[{"id":870,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"4416:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":871,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"4419:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":869,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":852,"src":"4407:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4407:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":873,"nodeType":"ExpressionStatement","src":"4407:14:0"}]}}]},"id":877,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"4269:8:0","nodeType":"FunctionDefinition","parameters":{"id":859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":854,"mutability":"mutable","name":"a","nameLocation":"4283:1:0","nodeType":"VariableDeclaration","scope":877,"src":"4278:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":853,"name":"uint","nodeType":"ElementaryTypeName","src":"4278:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":856,"mutability":"mutable","name":"b","nameLocation":"4291:1:0","nodeType":"VariableDeclaration","scope":877,"src":"4286:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":855,"name":"uint","nodeType":"ElementaryTypeName","src":"4286:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":858,"mutability":"mutable","name":"err","nameLocation":"4308:3:0","nodeType":"VariableDeclaration","scope":877,"src":"4294:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":857,"name":"string","nodeType":"ElementaryTypeName","src":"4294:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4277:35:0"},"returnParameters":{"id":860,"nodeType":"ParameterList","parameters":[],"src":"4322:0:0"},"scope":2124,"src":"4260:178:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":910,"nodeType":"Block","src":"4506:260:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":886,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":879,"src":"4520:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":887,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"4525:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"4520:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":909,"nodeType":"IfStatement","src":"4516:244:0","trueBody":{"id":908,"nodeType":"Block","src":"4528:232:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b646563696d616c20696e745d","id":890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4551:43:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_3ee6ef9b326324a79dedc7af5585ef9f689364368b4e76dd3a37559719a19fe6","typeString":"literal_string \"Error: a == b not satisfied [decimal int]\""},"value":"Error: a == b not satisfied [decimal int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3ee6ef9b326324a79dedc7af5585ef9f689364368b4e76dd3a37559719a19fe6","typeString":"literal_string \"Error: a == b not satisfied [decimal int]\""}],"id":889,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"4547:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4547:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":892,"nodeType":"EmitStatement","src":"4542:53:0"},{"eventCall":{"arguments":[{"hexValue":"20204578706563746564","id":894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4636:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},"value":" Expected"},{"id":895,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"4650:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":896,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"4653:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":893,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"4614:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4614:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":898,"nodeType":"EmitStatement","src":"4609:53:0"},{"eventCall":{"arguments":[{"hexValue":"2020202041637475616c","id":900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4703:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},"value":" Actual"},{"id":901,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":879,"src":"4717:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":902,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"4720:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":899,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"4681:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4681:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":904,"nodeType":"EmitStatement","src":"4676:53:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":905,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"4743:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4743:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":907,"nodeType":"ExpressionStatement","src":"4743:6:0"}]}}]},"id":911,"implemented":true,"kind":"function","modifiers":[],"name":"assertEqDecimal","nameLocation":"4452:15:0","nodeType":"FunctionDefinition","parameters":{"id":884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"a","nameLocation":"4472:1:0","nodeType":"VariableDeclaration","scope":911,"src":"4468:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":878,"name":"int","nodeType":"ElementaryTypeName","src":"4468:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":881,"mutability":"mutable","name":"b","nameLocation":"4479:1:0","nodeType":"VariableDeclaration","scope":911,"src":"4475:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":880,"name":"int","nodeType":"ElementaryTypeName","src":"4475:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":883,"mutability":"mutable","name":"decimals","nameLocation":"4487:8:0","nodeType":"VariableDeclaration","scope":911,"src":"4482:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":882,"name":"uint","nodeType":"ElementaryTypeName","src":"4482:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4467:29:0"},"returnParameters":{"id":885,"nodeType":"ParameterList","parameters":[],"src":"4506:0:0"},"scope":2124,"src":"4443:323:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":938,"nodeType":"Block","src":"4853:133:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":922,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"4867:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":923,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"4872:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"4867:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":937,"nodeType":"IfStatement","src":"4863:117:0","trueBody":{"id":936,"nodeType":"Block","src":"4875:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4911:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":927,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"4920:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":925,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"4894:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4894:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":929,"nodeType":"EmitStatement","src":"4889:35:0"},{"expression":{"arguments":[{"id":931,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"4954:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":932,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"4957:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":933,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"4960:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":930,"name":"assertEqDecimal","nodeType":"Identifier","overloadedDeclarations":[911,939,973,1001],"referencedDeclaration":911,"src":"4938:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (int256,int256,uint256)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4938:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":935,"nodeType":"ExpressionStatement","src":"4938:31:0"}]}}]},"id":939,"implemented":true,"kind":"function","modifiers":[],"name":"assertEqDecimal","nameLocation":"4780:15:0","nodeType":"FunctionDefinition","parameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":913,"mutability":"mutable","name":"a","nameLocation":"4800:1:0","nodeType":"VariableDeclaration","scope":939,"src":"4796:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":912,"name":"int","nodeType":"ElementaryTypeName","src":"4796:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":915,"mutability":"mutable","name":"b","nameLocation":"4807:1:0","nodeType":"VariableDeclaration","scope":939,"src":"4803:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":914,"name":"int","nodeType":"ElementaryTypeName","src":"4803:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":917,"mutability":"mutable","name":"decimals","nameLocation":"4815:8:0","nodeType":"VariableDeclaration","scope":939,"src":"4810:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":916,"name":"uint","nodeType":"ElementaryTypeName","src":"4810:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":919,"mutability":"mutable","name":"err","nameLocation":"4839:3:0","nodeType":"VariableDeclaration","scope":939,"src":"4825:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":918,"name":"string","nodeType":"ElementaryTypeName","src":"4825:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4795:48:0"},"returnParameters":{"id":921,"nodeType":"ParameterList","parameters":[],"src":"4853:0:0"},"scope":2124,"src":"4771:215:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":972,"nodeType":"Block","src":"5056:263:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":948,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"5070:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":949,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"5075:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5070:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":971,"nodeType":"IfStatement","src":"5066:247:0","trueBody":{"id":970,"nodeType":"Block","src":"5078:235:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b646563696d616c2075696e745d","id":952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5101:44:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_acd59a69b2dc4bcee2d5b2a205a178a5eace192e68808cc4db1cea91cdc48141","typeString":"literal_string \"Error: a == b not satisfied [decimal uint]\""},"value":"Error: a == b not satisfied [decimal uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_acd59a69b2dc4bcee2d5b2a205a178a5eace192e68808cc4db1cea91cdc48141","typeString":"literal_string \"Error: a == b not satisfied [decimal uint]\""}],"id":951,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"5097:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5097:49:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":954,"nodeType":"EmitStatement","src":"5092:54:0"},{"eventCall":{"arguments":[{"hexValue":"20204578706563746564","id":956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5188:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},"value":" Expected"},{"id":957,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"5202:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":958,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":945,"src":"5205:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":955,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"5165:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5165:49:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":960,"nodeType":"EmitStatement","src":"5160:54:0"},{"eventCall":{"arguments":[{"hexValue":"2020202041637475616c","id":962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5256:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},"value":" Actual"},{"id":963,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"5270:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":964,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":945,"src":"5273:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":961,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"5233:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5233:49:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":966,"nodeType":"EmitStatement","src":"5228:54:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":967,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"5296:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5296:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":969,"nodeType":"ExpressionStatement","src":"5296:6:0"}]}}]},"id":973,"implemented":true,"kind":"function","modifiers":[],"name":"assertEqDecimal","nameLocation":"5000:15:0","nodeType":"FunctionDefinition","parameters":{"id":946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":941,"mutability":"mutable","name":"a","nameLocation":"5021:1:0","nodeType":"VariableDeclaration","scope":973,"src":"5016:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":940,"name":"uint","nodeType":"ElementaryTypeName","src":"5016:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":943,"mutability":"mutable","name":"b","nameLocation":"5029:1:0","nodeType":"VariableDeclaration","scope":973,"src":"5024:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint","nodeType":"ElementaryTypeName","src":"5024:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":945,"mutability":"mutable","name":"decimals","nameLocation":"5037:8:0","nodeType":"VariableDeclaration","scope":973,"src":"5032:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":944,"name":"uint","nodeType":"ElementaryTypeName","src":"5032:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5015:31:0"},"returnParameters":{"id":947,"nodeType":"ParameterList","parameters":[],"src":"5056:0:0"},"scope":2124,"src":"4991:328:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1000,"nodeType":"Block","src":"5408:133:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":984,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"5422:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":985,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"5427:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5422:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":999,"nodeType":"IfStatement","src":"5418:117:0","trueBody":{"id":998,"nodeType":"Block","src":"5430:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5466:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":989,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"5475:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":987,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"5449:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5449:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":991,"nodeType":"EmitStatement","src":"5444:35:0"},{"expression":{"arguments":[{"id":993,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"5509:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":994,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"5512:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":995,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"5515:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":992,"name":"assertEqDecimal","nodeType":"Identifier","overloadedDeclarations":[911,939,973,1001],"referencedDeclaration":973,"src":"5493:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5493:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":997,"nodeType":"ExpressionStatement","src":"5493:31:0"}]}}]},"id":1001,"implemented":true,"kind":"function","modifiers":[],"name":"assertEqDecimal","nameLocation":"5333:15:0","nodeType":"FunctionDefinition","parameters":{"id":982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":975,"mutability":"mutable","name":"a","nameLocation":"5354:1:0","nodeType":"VariableDeclaration","scope":1001,"src":"5349:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":974,"name":"uint","nodeType":"ElementaryTypeName","src":"5349:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":977,"mutability":"mutable","name":"b","nameLocation":"5362:1:0","nodeType":"VariableDeclaration","scope":1001,"src":"5357:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":976,"name":"uint","nodeType":"ElementaryTypeName","src":"5357:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":979,"mutability":"mutable","name":"decimals","nameLocation":"5370:8:0","nodeType":"VariableDeclaration","scope":1001,"src":"5365:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":978,"name":"uint","nodeType":"ElementaryTypeName","src":"5365:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":981,"mutability":"mutable","name":"err","nameLocation":"5394:3:0","nodeType":"VariableDeclaration","scope":1001,"src":"5380:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":980,"name":"string","nodeType":"ElementaryTypeName","src":"5380:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5348:50:0"},"returnParameters":{"id":983,"nodeType":"ParameterList","parameters":[],"src":"5408:0:0"},"scope":2124,"src":"5324:217:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1030,"nodeType":"Block","src":"5590:216:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1008,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1003,"src":"5604:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1009,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1005,"src":"5609:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5604:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1029,"nodeType":"IfStatement","src":"5600:200:0","trueBody":{"id":1028,"nodeType":"Block","src":"5612:188:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e2062206e6f7420736174697366696564205b75696e745d","id":1012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5635:35:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_71977b46fbd6a64b4465b93c7a77bcaa06103df599ead9f7e7004b34129c9e3a","typeString":"literal_string \"Error: a > b not satisfied [uint]\""},"value":"Error: a > b not satisfied [uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_71977b46fbd6a64b4465b93c7a77bcaa06103df599ead9f7e7004b34129c9e3a","typeString":"literal_string \"Error: a > b not satisfied [uint]\""}],"id":1011,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"5631:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5631:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1014,"nodeType":"EmitStatement","src":"5626:45:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5705:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1017,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1003,"src":"5718:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1015,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"5690:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5690:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1019,"nodeType":"EmitStatement","src":"5685:35:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5754:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1022,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1005,"src":"5767:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1020,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"5739:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5739:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1024,"nodeType":"EmitStatement","src":"5734:35:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1025,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"5783:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5783:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1027,"nodeType":"ExpressionStatement","src":"5783:6:0"}]}}]},"id":1031,"implemented":true,"kind":"function","modifiers":[],"name":"assertGt","nameLocation":"5556:8:0","nodeType":"FunctionDefinition","parameters":{"id":1006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1003,"mutability":"mutable","name":"a","nameLocation":"5570:1:0","nodeType":"VariableDeclaration","scope":1031,"src":"5565:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1002,"name":"uint","nodeType":"ElementaryTypeName","src":"5565:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1005,"mutability":"mutable","name":"b","nameLocation":"5578:1:0","nodeType":"VariableDeclaration","scope":1031,"src":"5573:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1004,"name":"uint","nodeType":"ElementaryTypeName","src":"5573:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5564:16:0"},"returnParameters":{"id":1007,"nodeType":"ParameterList","parameters":[],"src":"5590:0:0"},"scope":2124,"src":"5547:259:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1055,"nodeType":"Block","src":"5873:116:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1040,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"5887:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1041,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"5892:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5887:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1054,"nodeType":"IfStatement","src":"5883:100:0","trueBody":{"id":1053,"nodeType":"Block","src":"5895:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5931:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1045,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"5940:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1043,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"5914:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5914:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1047,"nodeType":"EmitStatement","src":"5909:35:0"},{"expression":{"arguments":[{"id":1049,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"5967:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1050,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"5970:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1048,"name":"assertGt","nodeType":"Identifier","overloadedDeclarations":[1031,1056,1086,1111],"referencedDeclaration":1031,"src":"5958:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5958:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1052,"nodeType":"ExpressionStatement","src":"5958:14:0"}]}}]},"id":1056,"implemented":true,"kind":"function","modifiers":[],"name":"assertGt","nameLocation":"5820:8:0","nodeType":"FunctionDefinition","parameters":{"id":1038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1033,"mutability":"mutable","name":"a","nameLocation":"5834:1:0","nodeType":"VariableDeclaration","scope":1056,"src":"5829:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1032,"name":"uint","nodeType":"ElementaryTypeName","src":"5829:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1035,"mutability":"mutable","name":"b","nameLocation":"5842:1:0","nodeType":"VariableDeclaration","scope":1056,"src":"5837:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1034,"name":"uint","nodeType":"ElementaryTypeName","src":"5837:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1037,"mutability":"mutable","name":"err","nameLocation":"5859:3:0","nodeType":"VariableDeclaration","scope":1056,"src":"5845:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1036,"name":"string","nodeType":"ElementaryTypeName","src":"5845:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5828:35:0"},"returnParameters":{"id":1039,"nodeType":"ParameterList","parameters":[],"src":"5873:0:0"},"scope":2124,"src":"5811:178:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1085,"nodeType":"Block","src":"6035:213:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1063,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1058,"src":"6049:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1064,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"6054:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6049:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1084,"nodeType":"IfStatement","src":"6045:197:0","trueBody":{"id":1083,"nodeType":"Block","src":"6057:185:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e2062206e6f7420736174697366696564205b696e745d","id":1067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6080:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6338b3f9677628b4efbdc683490461f2a94469341c3d2ff3d117001fb77d49b","typeString":"literal_string \"Error: a > b not satisfied [int]\""},"value":"Error: a > b not satisfied [int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c6338b3f9677628b4efbdc683490461f2a94469341c3d2ff3d117001fb77d49b","typeString":"literal_string \"Error: a > b not satisfied [int]\""}],"id":1066,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"6076:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6076:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1069,"nodeType":"EmitStatement","src":"6071:44:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6148:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1072,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1058,"src":"6161:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1070,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"6134:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6134:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1074,"nodeType":"EmitStatement","src":"6129:34:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6196:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1077,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"6209:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1075,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"6182:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6182:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1079,"nodeType":"EmitStatement","src":"6177:34:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1080,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"6225:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6225:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1082,"nodeType":"ExpressionStatement","src":"6225:6:0"}]}}]},"id":1086,"implemented":true,"kind":"function","modifiers":[],"name":"assertGt","nameLocation":"6003:8:0","nodeType":"FunctionDefinition","parameters":{"id":1061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1058,"mutability":"mutable","name":"a","nameLocation":"6016:1:0","nodeType":"VariableDeclaration","scope":1086,"src":"6012:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1057,"name":"int","nodeType":"ElementaryTypeName","src":"6012:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1060,"mutability":"mutable","name":"b","nameLocation":"6023:1:0","nodeType":"VariableDeclaration","scope":1086,"src":"6019:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1059,"name":"int","nodeType":"ElementaryTypeName","src":"6019:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6011:14:0"},"returnParameters":{"id":1062,"nodeType":"ParameterList","parameters":[],"src":"6035:0:0"},"scope":2124,"src":"5994:254:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1110,"nodeType":"Block","src":"6313:116:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1095,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1088,"src":"6327:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1096,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1090,"src":"6332:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6327:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1109,"nodeType":"IfStatement","src":"6323:100:0","trueBody":{"id":1108,"nodeType":"Block","src":"6335:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6371:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1100,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1092,"src":"6380:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1098,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"6354:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6354:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1102,"nodeType":"EmitStatement","src":"6349:35:0"},{"expression":{"arguments":[{"id":1104,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1088,"src":"6407:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1105,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1090,"src":"6410:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1103,"name":"assertGt","nodeType":"Identifier","overloadedDeclarations":[1031,1056,1086,1111],"referencedDeclaration":1086,"src":"6398:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$returns$__$","typeString":"function (int256,int256)"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6398:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1107,"nodeType":"ExpressionStatement","src":"6398:14:0"}]}}]},"id":1111,"implemented":true,"kind":"function","modifiers":[],"name":"assertGt","nameLocation":"6262:8:0","nodeType":"FunctionDefinition","parameters":{"id":1093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1088,"mutability":"mutable","name":"a","nameLocation":"6275:1:0","nodeType":"VariableDeclaration","scope":1111,"src":"6271:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1087,"name":"int","nodeType":"ElementaryTypeName","src":"6271:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1090,"mutability":"mutable","name":"b","nameLocation":"6282:1:0","nodeType":"VariableDeclaration","scope":1111,"src":"6278:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1089,"name":"int","nodeType":"ElementaryTypeName","src":"6278:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1092,"mutability":"mutable","name":"err","nameLocation":"6299:3:0","nodeType":"VariableDeclaration","scope":1111,"src":"6285:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1091,"name":"string","nodeType":"ElementaryTypeName","src":"6285:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6270:33:0"},"returnParameters":{"id":1094,"nodeType":"ParameterList","parameters":[],"src":"6313:0:0"},"scope":2124,"src":"6253:176:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1144,"nodeType":"Block","src":"6497:257:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"6511:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1121,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"6516:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6511:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1143,"nodeType":"IfStatement","src":"6507:241:0","trueBody":{"id":1142,"nodeType":"Block","src":"6519:229:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e2062206e6f7420736174697366696564205b646563696d616c20696e745d","id":1124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6542:42:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_85ee98c18b4560d5bfeeef41e54955cef93f7b8071348c487f1fd81bd1aaf2ad","typeString":"literal_string \"Error: a > b not satisfied [decimal int]\""},"value":"Error: a > b not satisfied [decimal int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_85ee98c18b4560d5bfeeef41e54955cef93f7b8071348c487f1fd81bd1aaf2ad","typeString":"literal_string \"Error: a > b not satisfied [decimal int]\""}],"id":1123,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"6538:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6538:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1126,"nodeType":"EmitStatement","src":"6533:52:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6626:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1129,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"6639:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1130,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"6642:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1127,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"6604:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6604:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1132,"nodeType":"EmitStatement","src":"6599:52:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6692:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1135,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"6705:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1136,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"6708:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1133,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"6670:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6670:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1138,"nodeType":"EmitStatement","src":"6665:52:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1139,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"6731:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6731:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1141,"nodeType":"ExpressionStatement","src":"6731:6:0"}]}}]},"id":1145,"implemented":true,"kind":"function","modifiers":[],"name":"assertGtDecimal","nameLocation":"6443:15:0","nodeType":"FunctionDefinition","parameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"a","nameLocation":"6463:1:0","nodeType":"VariableDeclaration","scope":1145,"src":"6459:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1112,"name":"int","nodeType":"ElementaryTypeName","src":"6459:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1115,"mutability":"mutable","name":"b","nameLocation":"6470:1:0","nodeType":"VariableDeclaration","scope":1145,"src":"6466:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1114,"name":"int","nodeType":"ElementaryTypeName","src":"6466:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1117,"mutability":"mutable","name":"decimals","nameLocation":"6478:8:0","nodeType":"VariableDeclaration","scope":1145,"src":"6473:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1116,"name":"uint","nodeType":"ElementaryTypeName","src":"6473:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6458:29:0"},"returnParameters":{"id":1119,"nodeType":"ParameterList","parameters":[],"src":"6497:0:0"},"scope":2124,"src":"6434:320:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1172,"nodeType":"Block","src":"6841:133:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1156,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"6855:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1157,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"6860:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6855:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1171,"nodeType":"IfStatement","src":"6851:117:0","trueBody":{"id":1170,"nodeType":"Block","src":"6863:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6899:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1161,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1153,"src":"6908:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1159,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"6882:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6882:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1163,"nodeType":"EmitStatement","src":"6877:35:0"},{"expression":{"arguments":[{"id":1165,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"6942:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1166,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"6945:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1167,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"6948:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1164,"name":"assertGtDecimal","nodeType":"Identifier","overloadedDeclarations":[1145,1173,1207,1235],"referencedDeclaration":1145,"src":"6926:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (int256,int256,uint256)"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6926:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1169,"nodeType":"ExpressionStatement","src":"6926:31:0"}]}}]},"id":1173,"implemented":true,"kind":"function","modifiers":[],"name":"assertGtDecimal","nameLocation":"6768:15:0","nodeType":"FunctionDefinition","parameters":{"id":1154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1147,"mutability":"mutable","name":"a","nameLocation":"6788:1:0","nodeType":"VariableDeclaration","scope":1173,"src":"6784:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1146,"name":"int","nodeType":"ElementaryTypeName","src":"6784:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1149,"mutability":"mutable","name":"b","nameLocation":"6795:1:0","nodeType":"VariableDeclaration","scope":1173,"src":"6791:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1148,"name":"int","nodeType":"ElementaryTypeName","src":"6791:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1151,"mutability":"mutable","name":"decimals","nameLocation":"6803:8:0","nodeType":"VariableDeclaration","scope":1173,"src":"6798:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint","nodeType":"ElementaryTypeName","src":"6798:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1153,"mutability":"mutable","name":"err","nameLocation":"6827:3:0","nodeType":"VariableDeclaration","scope":1173,"src":"6813:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1152,"name":"string","nodeType":"ElementaryTypeName","src":"6813:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6783:48:0"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[],"src":"6841:0:0"},"scope":2124,"src":"6759:215:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1206,"nodeType":"Block","src":"7044:260:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1182,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"7058:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1183,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1177,"src":"7063:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7058:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1205,"nodeType":"IfStatement","src":"7054:244:0","trueBody":{"id":1204,"nodeType":"Block","src":"7066:232:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e2062206e6f7420736174697366696564205b646563696d616c2075696e745d","id":1186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7089:43:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a2cca6a3a53808b9763cfdafa62d083cc161a243845052a9c6e09d6d624c69f","typeString":"literal_string \"Error: a > b not satisfied [decimal uint]\""},"value":"Error: a > b not satisfied [decimal uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2a2cca6a3a53808b9763cfdafa62d083cc161a243845052a9c6e09d6d624c69f","typeString":"literal_string \"Error: a > b not satisfied [decimal uint]\""}],"id":1185,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"7085:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7085:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1188,"nodeType":"EmitStatement","src":"7080:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7175:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1191,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"7188:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1192,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"7191:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1189,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"7152:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7152:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1194,"nodeType":"EmitStatement","src":"7147:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7242:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1197,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1177,"src":"7255:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1198,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"7258:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1195,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"7219:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7219:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1200,"nodeType":"EmitStatement","src":"7214:53:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1201,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"7281:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7281:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1203,"nodeType":"ExpressionStatement","src":"7281:6:0"}]}}]},"id":1207,"implemented":true,"kind":"function","modifiers":[],"name":"assertGtDecimal","nameLocation":"6988:15:0","nodeType":"FunctionDefinition","parameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1175,"mutability":"mutable","name":"a","nameLocation":"7009:1:0","nodeType":"VariableDeclaration","scope":1207,"src":"7004:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1174,"name":"uint","nodeType":"ElementaryTypeName","src":"7004:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1177,"mutability":"mutable","name":"b","nameLocation":"7017:1:0","nodeType":"VariableDeclaration","scope":1207,"src":"7012:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1176,"name":"uint","nodeType":"ElementaryTypeName","src":"7012:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1179,"mutability":"mutable","name":"decimals","nameLocation":"7025:8:0","nodeType":"VariableDeclaration","scope":1207,"src":"7020:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1178,"name":"uint","nodeType":"ElementaryTypeName","src":"7020:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7003:31:0"},"returnParameters":{"id":1181,"nodeType":"ParameterList","parameters":[],"src":"7044:0:0"},"scope":2124,"src":"6979:325:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1234,"nodeType":"Block","src":"7393:133:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"7407:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1219,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"7412:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7407:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1233,"nodeType":"IfStatement","src":"7403:117:0","trueBody":{"id":1232,"nodeType":"Block","src":"7415:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7451:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1223,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"7460:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1221,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"7434:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7434:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1225,"nodeType":"EmitStatement","src":"7429:35:0"},{"expression":{"arguments":[{"id":1227,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"7494:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1228,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"7497:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1229,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"7500:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1226,"name":"assertGtDecimal","nodeType":"Identifier","overloadedDeclarations":[1145,1173,1207,1235],"referencedDeclaration":1207,"src":"7478:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7478:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1231,"nodeType":"ExpressionStatement","src":"7478:31:0"}]}}]},"id":1235,"implemented":true,"kind":"function","modifiers":[],"name":"assertGtDecimal","nameLocation":"7318:15:0","nodeType":"FunctionDefinition","parameters":{"id":1216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"a","nameLocation":"7339:1:0","nodeType":"VariableDeclaration","scope":1235,"src":"7334:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1208,"name":"uint","nodeType":"ElementaryTypeName","src":"7334:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1211,"mutability":"mutable","name":"b","nameLocation":"7347:1:0","nodeType":"VariableDeclaration","scope":1235,"src":"7342:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1210,"name":"uint","nodeType":"ElementaryTypeName","src":"7342:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1213,"mutability":"mutable","name":"decimals","nameLocation":"7355:8:0","nodeType":"VariableDeclaration","scope":1235,"src":"7350:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1212,"name":"uint","nodeType":"ElementaryTypeName","src":"7350:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1215,"mutability":"mutable","name":"err","nameLocation":"7379:3:0","nodeType":"VariableDeclaration","scope":1235,"src":"7365:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1214,"name":"string","nodeType":"ElementaryTypeName","src":"7365:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7333:50:0"},"returnParameters":{"id":1217,"nodeType":"ParameterList","parameters":[],"src":"7393:0:0"},"scope":2124,"src":"7309:217:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1264,"nodeType":"Block","src":"7575:216:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1242,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"7589:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1243,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"7593:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7589:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1263,"nodeType":"IfStatement","src":"7585:200:0","trueBody":{"id":1262,"nodeType":"Block","src":"7596:189:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e3d2062206e6f7420736174697366696564205b75696e745d","id":1246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7619:36:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad79593ab7a8c163bd9b5379945ad36a940281a5ef1023478b9c309b02ea375e","typeString":"literal_string \"Error: a >= b not satisfied [uint]\""},"value":"Error: a >= b not satisfied [uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ad79593ab7a8c163bd9b5379945ad36a940281a5ef1023478b9c309b02ea375e","typeString":"literal_string \"Error: a >= b not satisfied [uint]\""}],"id":1245,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"7615:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7615:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1248,"nodeType":"EmitStatement","src":"7610:46:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7690:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1251,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"7703:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1249,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"7675:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7675:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1253,"nodeType":"EmitStatement","src":"7670:35:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7739:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1256,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"7752:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1254,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"7724:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7724:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1258,"nodeType":"EmitStatement","src":"7719:35:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1259,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"7768:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7768:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1261,"nodeType":"ExpressionStatement","src":"7768:6:0"}]}}]},"id":1265,"implemented":true,"kind":"function","modifiers":[],"name":"assertGe","nameLocation":"7541:8:0","nodeType":"FunctionDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1237,"mutability":"mutable","name":"a","nameLocation":"7555:1:0","nodeType":"VariableDeclaration","scope":1265,"src":"7550:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1236,"name":"uint","nodeType":"ElementaryTypeName","src":"7550:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1239,"mutability":"mutable","name":"b","nameLocation":"7563:1:0","nodeType":"VariableDeclaration","scope":1265,"src":"7558:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1238,"name":"uint","nodeType":"ElementaryTypeName","src":"7558:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7549:16:0"},"returnParameters":{"id":1241,"nodeType":"ParameterList","parameters":[],"src":"7575:0:0"},"scope":2124,"src":"7532:259:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1289,"nodeType":"Block","src":"7858:115:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1274,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"7872:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1275,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"7876:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7872:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1288,"nodeType":"IfStatement","src":"7868:99:0","trueBody":{"id":1287,"nodeType":"Block","src":"7879:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7915:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1279,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"7924:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1277,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"7898:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7898:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1281,"nodeType":"EmitStatement","src":"7893:35:0"},{"expression":{"arguments":[{"id":1283,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1267,"src":"7951:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1284,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"7954:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"name":"assertGe","nodeType":"Identifier","overloadedDeclarations":[1265,1290,1320,1345],"referencedDeclaration":1265,"src":"7942:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7942:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1286,"nodeType":"ExpressionStatement","src":"7942:14:0"}]}}]},"id":1290,"implemented":true,"kind":"function","modifiers":[],"name":"assertGe","nameLocation":"7805:8:0","nodeType":"FunctionDefinition","parameters":{"id":1272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1267,"mutability":"mutable","name":"a","nameLocation":"7819:1:0","nodeType":"VariableDeclaration","scope":1290,"src":"7814:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1266,"name":"uint","nodeType":"ElementaryTypeName","src":"7814:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1269,"mutability":"mutable","name":"b","nameLocation":"7827:1:0","nodeType":"VariableDeclaration","scope":1290,"src":"7822:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1268,"name":"uint","nodeType":"ElementaryTypeName","src":"7822:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1271,"mutability":"mutable","name":"err","nameLocation":"7844:3:0","nodeType":"VariableDeclaration","scope":1290,"src":"7830:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1270,"name":"string","nodeType":"ElementaryTypeName","src":"7830:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7813:35:0"},"returnParameters":{"id":1273,"nodeType":"ParameterList","parameters":[],"src":"7858:0:0"},"scope":2124,"src":"7796:177:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1319,"nodeType":"Block","src":"8019:213:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1297,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"8033:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1298,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8037:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8033:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1318,"nodeType":"IfStatement","src":"8029:197:0","trueBody":{"id":1317,"nodeType":"Block","src":"8040:186:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e3d2062206e6f7420736174697366696564205b696e745d","id":1301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8063:35:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9dd34d7cd7d190bc9855e4326f563fd4539c0d764699b480d53bfd72aa5807a6","typeString":"literal_string \"Error: a >= b not satisfied [int]\""},"value":"Error: a >= b not satisfied [int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9dd34d7cd7d190bc9855e4326f563fd4539c0d764699b480d53bfd72aa5807a6","typeString":"literal_string \"Error: a >= b not satisfied [int]\""}],"id":1300,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"8059:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8059:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1303,"nodeType":"EmitStatement","src":"8054:45:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8132:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1306,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"8145:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1304,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"8118:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8118:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1308,"nodeType":"EmitStatement","src":"8113:34:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8180:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1311,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8193:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1309,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"8166:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8166:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1313,"nodeType":"EmitStatement","src":"8161:34:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1314,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"8209:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8209:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1316,"nodeType":"ExpressionStatement","src":"8209:6:0"}]}}]},"id":1320,"implemented":true,"kind":"function","modifiers":[],"name":"assertGe","nameLocation":"7987:8:0","nodeType":"FunctionDefinition","parameters":{"id":1295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1292,"mutability":"mutable","name":"a","nameLocation":"8000:1:0","nodeType":"VariableDeclaration","scope":1320,"src":"7996:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1291,"name":"int","nodeType":"ElementaryTypeName","src":"7996:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1294,"mutability":"mutable","name":"b","nameLocation":"8007:1:0","nodeType":"VariableDeclaration","scope":1320,"src":"8003:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1293,"name":"int","nodeType":"ElementaryTypeName","src":"8003:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7995:14:0"},"returnParameters":{"id":1296,"nodeType":"ParameterList","parameters":[],"src":"8019:0:0"},"scope":2124,"src":"7978:254:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1344,"nodeType":"Block","src":"8297:115:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1329,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"8311:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1330,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"8315:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8311:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1343,"nodeType":"IfStatement","src":"8307:99:0","trueBody":{"id":1342,"nodeType":"Block","src":"8318:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8354:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1334,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"8363:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1332,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"8337:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8337:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1336,"nodeType":"EmitStatement","src":"8332:35:0"},{"expression":{"arguments":[{"id":1338,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"8390:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1339,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"8393:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1337,"name":"assertGe","nodeType":"Identifier","overloadedDeclarations":[1265,1290,1320,1345],"referencedDeclaration":1320,"src":"8381:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$returns$__$","typeString":"function (int256,int256)"}},"id":1340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8381:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1341,"nodeType":"ExpressionStatement","src":"8381:14:0"}]}}]},"id":1345,"implemented":true,"kind":"function","modifiers":[],"name":"assertGe","nameLocation":"8246:8:0","nodeType":"FunctionDefinition","parameters":{"id":1327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1322,"mutability":"mutable","name":"a","nameLocation":"8259:1:0","nodeType":"VariableDeclaration","scope":1345,"src":"8255:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1321,"name":"int","nodeType":"ElementaryTypeName","src":"8255:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1324,"mutability":"mutable","name":"b","nameLocation":"8266:1:0","nodeType":"VariableDeclaration","scope":1345,"src":"8262:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1323,"name":"int","nodeType":"ElementaryTypeName","src":"8262:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1326,"mutability":"mutable","name":"err","nameLocation":"8283:3:0","nodeType":"VariableDeclaration","scope":1345,"src":"8269:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1325,"name":"string","nodeType":"ElementaryTypeName","src":"8269:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8254:33:0"},"returnParameters":{"id":1328,"nodeType":"ParameterList","parameters":[],"src":"8297:0:0"},"scope":2124,"src":"8237:175:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1378,"nodeType":"Block","src":"8480:257:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1354,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"8494:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1355,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"8498:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8494:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1377,"nodeType":"IfStatement","src":"8490:241:0","trueBody":{"id":1376,"nodeType":"Block","src":"8501:230:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e3d2062206e6f7420736174697366696564205b646563696d616c20696e745d","id":1358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8524:43:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f02f65375ca93c3f3c485b8b2455303d1a8668a2b626cba00789d1c4ebd8736","typeString":"literal_string \"Error: a >= b not satisfied [decimal int]\""},"value":"Error: a >= b not satisfied [decimal int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0f02f65375ca93c3f3c485b8b2455303d1a8668a2b626cba00789d1c4ebd8736","typeString":"literal_string \"Error: a >= b not satisfied [decimal int]\""}],"id":1357,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"8520:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8520:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1360,"nodeType":"EmitStatement","src":"8515:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8609:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1363,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"8622:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1364,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"8625:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1361,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8587:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8587:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1366,"nodeType":"EmitStatement","src":"8582:52:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8675:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1369,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"8688:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1370,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1351,"src":"8691:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1367,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8653:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8653:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1372,"nodeType":"EmitStatement","src":"8648:52:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1373,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"8714:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8714:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1375,"nodeType":"ExpressionStatement","src":"8714:6:0"}]}}]},"id":1379,"implemented":true,"kind":"function","modifiers":[],"name":"assertGeDecimal","nameLocation":"8426:15:0","nodeType":"FunctionDefinition","parameters":{"id":1352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1347,"mutability":"mutable","name":"a","nameLocation":"8446:1:0","nodeType":"VariableDeclaration","scope":1379,"src":"8442:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1346,"name":"int","nodeType":"ElementaryTypeName","src":"8442:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1349,"mutability":"mutable","name":"b","nameLocation":"8453:1:0","nodeType":"VariableDeclaration","scope":1379,"src":"8449:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1348,"name":"int","nodeType":"ElementaryTypeName","src":"8449:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1351,"mutability":"mutable","name":"decimals","nameLocation":"8461:8:0","nodeType":"VariableDeclaration","scope":1379,"src":"8456:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1350,"name":"uint","nodeType":"ElementaryTypeName","src":"8456:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8441:29:0"},"returnParameters":{"id":1353,"nodeType":"ParameterList","parameters":[],"src":"8480:0:0"},"scope":2124,"src":"8417:320:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1406,"nodeType":"Block","src":"8824:132:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1390,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"8838:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1391,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"8842:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"8838:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1405,"nodeType":"IfStatement","src":"8834:116:0","trueBody":{"id":1404,"nodeType":"Block","src":"8845:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8881:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1395,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"8890:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1393,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"8864:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8864:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1397,"nodeType":"EmitStatement","src":"8859:35:0"},{"expression":{"arguments":[{"id":1399,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"8924:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1400,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"8927:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1401,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"8930:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1398,"name":"assertGeDecimal","nodeType":"Identifier","overloadedDeclarations":[1379,1407,1441,1469],"referencedDeclaration":1379,"src":"8908:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (int256,int256,uint256)"}},"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8908:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1403,"nodeType":"ExpressionStatement","src":"8908:31:0"}]}}]},"id":1407,"implemented":true,"kind":"function","modifiers":[],"name":"assertGeDecimal","nameLocation":"8751:15:0","nodeType":"FunctionDefinition","parameters":{"id":1388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1381,"mutability":"mutable","name":"a","nameLocation":"8771:1:0","nodeType":"VariableDeclaration","scope":1407,"src":"8767:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1380,"name":"int","nodeType":"ElementaryTypeName","src":"8767:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1383,"mutability":"mutable","name":"b","nameLocation":"8778:1:0","nodeType":"VariableDeclaration","scope":1407,"src":"8774:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1382,"name":"int","nodeType":"ElementaryTypeName","src":"8774:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1385,"mutability":"mutable","name":"decimals","nameLocation":"8786:8:0","nodeType":"VariableDeclaration","scope":1407,"src":"8781:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint","nodeType":"ElementaryTypeName","src":"8781:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1387,"mutability":"mutable","name":"err","nameLocation":"8810:3:0","nodeType":"VariableDeclaration","scope":1407,"src":"8796:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1386,"name":"string","nodeType":"ElementaryTypeName","src":"8796:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8766:48:0"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[],"src":"8824:0:0"},"scope":2124,"src":"8742:214:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1440,"nodeType":"Block","src":"9026:260:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1416,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"9040:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1417,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1411,"src":"9044:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9040:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1439,"nodeType":"IfStatement","src":"9036:244:0","trueBody":{"id":1438,"nodeType":"Block","src":"9047:233:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203e3d2062206e6f7420736174697366696564205b646563696d616c2075696e745d","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9070:44:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_1192304a51ee70969886576ac83224cad7adddc5aab218616c612e9fa634c616","typeString":"literal_string \"Error: a >= b not satisfied [decimal uint]\""},"value":"Error: a >= b not satisfied [decimal uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1192304a51ee70969886576ac83224cad7adddc5aab218616c612e9fa634c616","typeString":"literal_string \"Error: a >= b not satisfied [decimal uint]\""}],"id":1419,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"9066:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9066:49:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1422,"nodeType":"EmitStatement","src":"9061:54:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9157:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1425,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1409,"src":"9170:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1426,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"9173:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1423,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"9134:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9134:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1428,"nodeType":"EmitStatement","src":"9129:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9224:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1431,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1411,"src":"9237:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1432,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1413,"src":"9240:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1429,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"9201:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9201:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1434,"nodeType":"EmitStatement","src":"9196:53:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1435,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"9263:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9263:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1437,"nodeType":"ExpressionStatement","src":"9263:6:0"}]}}]},"id":1441,"implemented":true,"kind":"function","modifiers":[],"name":"assertGeDecimal","nameLocation":"8970:15:0","nodeType":"FunctionDefinition","parameters":{"id":1414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1409,"mutability":"mutable","name":"a","nameLocation":"8991:1:0","nodeType":"VariableDeclaration","scope":1441,"src":"8986:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1408,"name":"uint","nodeType":"ElementaryTypeName","src":"8986:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1411,"mutability":"mutable","name":"b","nameLocation":"8999:1:0","nodeType":"VariableDeclaration","scope":1441,"src":"8994:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1410,"name":"uint","nodeType":"ElementaryTypeName","src":"8994:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1413,"mutability":"mutable","name":"decimals","nameLocation":"9007:8:0","nodeType":"VariableDeclaration","scope":1441,"src":"9002:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1412,"name":"uint","nodeType":"ElementaryTypeName","src":"9002:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8985:31:0"},"returnParameters":{"id":1415,"nodeType":"ParameterList","parameters":[],"src":"9026:0:0"},"scope":2124,"src":"8961:325:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1468,"nodeType":"Block","src":"9375:132:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1452,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"9389:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1453,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"9393:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9389:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1467,"nodeType":"IfStatement","src":"9385:116:0","trueBody":{"id":1466,"nodeType":"Block","src":"9396:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9432:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1457,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1449,"src":"9441:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1455,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"9415:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9415:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1459,"nodeType":"EmitStatement","src":"9410:35:0"},{"expression":{"arguments":[{"id":1461,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"9475:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1462,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"9478:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1463,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1447,"src":"9481:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1460,"name":"assertGeDecimal","nodeType":"Identifier","overloadedDeclarations":[1379,1407,1441,1469],"referencedDeclaration":1441,"src":"9459:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9459:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1465,"nodeType":"ExpressionStatement","src":"9459:31:0"}]}}]},"id":1469,"implemented":true,"kind":"function","modifiers":[],"name":"assertGeDecimal","nameLocation":"9300:15:0","nodeType":"FunctionDefinition","parameters":{"id":1450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1443,"mutability":"mutable","name":"a","nameLocation":"9321:1:0","nodeType":"VariableDeclaration","scope":1469,"src":"9316:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1442,"name":"uint","nodeType":"ElementaryTypeName","src":"9316:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"b","nameLocation":"9329:1:0","nodeType":"VariableDeclaration","scope":1469,"src":"9324:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1444,"name":"uint","nodeType":"ElementaryTypeName","src":"9324:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1447,"mutability":"mutable","name":"decimals","nameLocation":"9337:8:0","nodeType":"VariableDeclaration","scope":1469,"src":"9332:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint","nodeType":"ElementaryTypeName","src":"9332:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1449,"mutability":"mutable","name":"err","nameLocation":"9361:3:0","nodeType":"VariableDeclaration","scope":1469,"src":"9347:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1448,"name":"string","nodeType":"ElementaryTypeName","src":"9347:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9315:50:0"},"returnParameters":{"id":1451,"nodeType":"ParameterList","parameters":[],"src":"9375:0:0"},"scope":2124,"src":"9291:216:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1498,"nodeType":"Block","src":"9556:216:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1476,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1471,"src":"9570:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1477,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"9575:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9570:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1497,"nodeType":"IfStatement","src":"9566:200:0","trueBody":{"id":1496,"nodeType":"Block","src":"9578:188:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c2062206e6f7420736174697366696564205b75696e745d","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9601:35:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4a5f85d4936ddbc273c762d0b3a90fefdc47bf4d5496816359b86f70b5c74f9","typeString":"literal_string \"Error: a < b not satisfied [uint]\""},"value":"Error: a < b not satisfied [uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4a5f85d4936ddbc273c762d0b3a90fefdc47bf4d5496816359b86f70b5c74f9","typeString":"literal_string \"Error: a < b not satisfied [uint]\""}],"id":1479,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"9597:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9597:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1482,"nodeType":"EmitStatement","src":"9592:45:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9671:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1485,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1471,"src":"9684:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1483,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"9656:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9656:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1487,"nodeType":"EmitStatement","src":"9651:35:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9720:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1490,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"9733:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1488,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"9705:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9705:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1492,"nodeType":"EmitStatement","src":"9700:35:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1493,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"9749:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9749:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1495,"nodeType":"ExpressionStatement","src":"9749:6:0"}]}}]},"id":1499,"implemented":true,"kind":"function","modifiers":[],"name":"assertLt","nameLocation":"9522:8:0","nodeType":"FunctionDefinition","parameters":{"id":1474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1471,"mutability":"mutable","name":"a","nameLocation":"9536:1:0","nodeType":"VariableDeclaration","scope":1499,"src":"9531:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint","nodeType":"ElementaryTypeName","src":"9531:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1473,"mutability":"mutable","name":"b","nameLocation":"9544:1:0","nodeType":"VariableDeclaration","scope":1499,"src":"9539:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1472,"name":"uint","nodeType":"ElementaryTypeName","src":"9539:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9530:16:0"},"returnParameters":{"id":1475,"nodeType":"ParameterList","parameters":[],"src":"9556:0:0"},"scope":2124,"src":"9513:259:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1523,"nodeType":"Block","src":"9839:116:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1508,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"9853:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1509,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"9858:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9853:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1522,"nodeType":"IfStatement","src":"9849:100:0","trueBody":{"id":1521,"nodeType":"Block","src":"9861:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9897:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1513,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1505,"src":"9906:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1511,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"9880:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9880:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1515,"nodeType":"EmitStatement","src":"9875:35:0"},{"expression":{"arguments":[{"id":1517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"9933:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1518,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"9936:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1516,"name":"assertLt","nodeType":"Identifier","overloadedDeclarations":[1499,1524,1554,1579],"referencedDeclaration":1499,"src":"9924:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9924:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1520,"nodeType":"ExpressionStatement","src":"9924:14:0"}]}}]},"id":1524,"implemented":true,"kind":"function","modifiers":[],"name":"assertLt","nameLocation":"9786:8:0","nodeType":"FunctionDefinition","parameters":{"id":1506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1501,"mutability":"mutable","name":"a","nameLocation":"9800:1:0","nodeType":"VariableDeclaration","scope":1524,"src":"9795:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1500,"name":"uint","nodeType":"ElementaryTypeName","src":"9795:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1503,"mutability":"mutable","name":"b","nameLocation":"9808:1:0","nodeType":"VariableDeclaration","scope":1524,"src":"9803:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1502,"name":"uint","nodeType":"ElementaryTypeName","src":"9803:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1505,"mutability":"mutable","name":"err","nameLocation":"9825:3:0","nodeType":"VariableDeclaration","scope":1524,"src":"9811:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1504,"name":"string","nodeType":"ElementaryTypeName","src":"9811:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9794:35:0"},"returnParameters":{"id":1507,"nodeType":"ParameterList","parameters":[],"src":"9839:0:0"},"scope":2124,"src":"9777:178:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1553,"nodeType":"Block","src":"10001:213:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1531,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1526,"src":"10015:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1532,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"10020:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10015:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1552,"nodeType":"IfStatement","src":"10011:197:0","trueBody":{"id":1551,"nodeType":"Block","src":"10023:185:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c2062206e6f7420736174697366696564205b696e745d","id":1535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10046:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_62edb5e296dde1308ab599c3156f51dcd32b6d82784df4b0c0246d307d4bd055","typeString":"literal_string \"Error: a < b not satisfied [int]\""},"value":"Error: a < b not satisfied [int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_62edb5e296dde1308ab599c3156f51dcd32b6d82784df4b0c0246d307d4bd055","typeString":"literal_string \"Error: a < b not satisfied [int]\""}],"id":1534,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10042:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10042:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1537,"nodeType":"EmitStatement","src":"10037:44:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10114:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1540,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1526,"src":"10127:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1538,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"10100:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10100:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1542,"nodeType":"EmitStatement","src":"10095:34:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10162:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1545,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"10175:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1543,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"10148:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10148:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1547,"nodeType":"EmitStatement","src":"10143:34:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1548,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"10191:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10191:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1550,"nodeType":"ExpressionStatement","src":"10191:6:0"}]}}]},"id":1554,"implemented":true,"kind":"function","modifiers":[],"name":"assertLt","nameLocation":"9969:8:0","nodeType":"FunctionDefinition","parameters":{"id":1529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1526,"mutability":"mutable","name":"a","nameLocation":"9982:1:0","nodeType":"VariableDeclaration","scope":1554,"src":"9978:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1525,"name":"int","nodeType":"ElementaryTypeName","src":"9978:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1528,"mutability":"mutable","name":"b","nameLocation":"9989:1:0","nodeType":"VariableDeclaration","scope":1554,"src":"9985:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1527,"name":"int","nodeType":"ElementaryTypeName","src":"9985:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9977:14:0"},"returnParameters":{"id":1530,"nodeType":"ParameterList","parameters":[],"src":"10001:0:0"},"scope":2124,"src":"9960:254:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1578,"nodeType":"Block","src":"10279:116:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1563,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1556,"src":"10293:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1564,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"10298:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10293:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1577,"nodeType":"IfStatement","src":"10289:100:0","trueBody":{"id":1576,"nodeType":"Block","src":"10301:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10337:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1568,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"10346:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1566,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"10320:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10320:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1570,"nodeType":"EmitStatement","src":"10315:35:0"},{"expression":{"arguments":[{"id":1572,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1556,"src":"10373:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1573,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"10376:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1571,"name":"assertLt","nodeType":"Identifier","overloadedDeclarations":[1499,1524,1554,1579],"referencedDeclaration":1554,"src":"10364:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$returns$__$","typeString":"function (int256,int256)"}},"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10364:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1575,"nodeType":"ExpressionStatement","src":"10364:14:0"}]}}]},"id":1579,"implemented":true,"kind":"function","modifiers":[],"name":"assertLt","nameLocation":"10228:8:0","nodeType":"FunctionDefinition","parameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"a","nameLocation":"10241:1:0","nodeType":"VariableDeclaration","scope":1579,"src":"10237:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1555,"name":"int","nodeType":"ElementaryTypeName","src":"10237:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1558,"mutability":"mutable","name":"b","nameLocation":"10248:1:0","nodeType":"VariableDeclaration","scope":1579,"src":"10244:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1557,"name":"int","nodeType":"ElementaryTypeName","src":"10244:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"err","nameLocation":"10265:3:0","nodeType":"VariableDeclaration","scope":1579,"src":"10251:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1559,"name":"string","nodeType":"ElementaryTypeName","src":"10251:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10236:33:0"},"returnParameters":{"id":1562,"nodeType":"ParameterList","parameters":[],"src":"10279:0:0"},"scope":2124,"src":"10219:176:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1612,"nodeType":"Block","src":"10463:257:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1588,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"10477:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1589,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1583,"src":"10482:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10477:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1611,"nodeType":"IfStatement","src":"10473:241:0","trueBody":{"id":1610,"nodeType":"Block","src":"10485:229:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c2062206e6f7420736174697366696564205b646563696d616c20696e745d","id":1592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10508:42:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a598de9e78c706978d3e40be19632446c2f234152ee02226f88acff1b63da79a","typeString":"literal_string \"Error: a < b not satisfied [decimal int]\""},"value":"Error: a < b not satisfied [decimal int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a598de9e78c706978d3e40be19632446c2f234152ee02226f88acff1b63da79a","typeString":"literal_string \"Error: a < b not satisfied [decimal int]\""}],"id":1591,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"10504:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10504:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1594,"nodeType":"EmitStatement","src":"10499:52:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10592:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1597,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"10605:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1598,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"10608:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1595,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"10570:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10570:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1600,"nodeType":"EmitStatement","src":"10565:52:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10658:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1603,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1583,"src":"10671:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1604,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"10674:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1601,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"10636:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10636:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1606,"nodeType":"EmitStatement","src":"10631:52:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1607,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"10697:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10697:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1609,"nodeType":"ExpressionStatement","src":"10697:6:0"}]}}]},"id":1613,"implemented":true,"kind":"function","modifiers":[],"name":"assertLtDecimal","nameLocation":"10409:15:0","nodeType":"FunctionDefinition","parameters":{"id":1586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1581,"mutability":"mutable","name":"a","nameLocation":"10429:1:0","nodeType":"VariableDeclaration","scope":1613,"src":"10425:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1580,"name":"int","nodeType":"ElementaryTypeName","src":"10425:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"b","nameLocation":"10436:1:0","nodeType":"VariableDeclaration","scope":1613,"src":"10432:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1582,"name":"int","nodeType":"ElementaryTypeName","src":"10432:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1585,"mutability":"mutable","name":"decimals","nameLocation":"10444:8:0","nodeType":"VariableDeclaration","scope":1613,"src":"10439:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1584,"name":"uint","nodeType":"ElementaryTypeName","src":"10439:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10424:29:0"},"returnParameters":{"id":1587,"nodeType":"ParameterList","parameters":[],"src":"10463:0:0"},"scope":2124,"src":"10400:320:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1640,"nodeType":"Block","src":"10807:133:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1624,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"10821:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1625,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"10826:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10821:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1639,"nodeType":"IfStatement","src":"10817:117:0","trueBody":{"id":1638,"nodeType":"Block","src":"10829:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10865:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1629,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"10874:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1627,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"10848:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10848:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1631,"nodeType":"EmitStatement","src":"10843:35:0"},{"expression":{"arguments":[{"id":1633,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"10908:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1634,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"10911:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1635,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"10914:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1632,"name":"assertLtDecimal","nodeType":"Identifier","overloadedDeclarations":[1613,1641,1675,1703],"referencedDeclaration":1613,"src":"10892:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (int256,int256,uint256)"}},"id":1636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10892:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1637,"nodeType":"ExpressionStatement","src":"10892:31:0"}]}}]},"id":1641,"implemented":true,"kind":"function","modifiers":[],"name":"assertLtDecimal","nameLocation":"10734:15:0","nodeType":"FunctionDefinition","parameters":{"id":1622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1615,"mutability":"mutable","name":"a","nameLocation":"10754:1:0","nodeType":"VariableDeclaration","scope":1641,"src":"10750:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1614,"name":"int","nodeType":"ElementaryTypeName","src":"10750:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1617,"mutability":"mutable","name":"b","nameLocation":"10761:1:0","nodeType":"VariableDeclaration","scope":1641,"src":"10757:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1616,"name":"int","nodeType":"ElementaryTypeName","src":"10757:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1619,"mutability":"mutable","name":"decimals","nameLocation":"10769:8:0","nodeType":"VariableDeclaration","scope":1641,"src":"10764:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1618,"name":"uint","nodeType":"ElementaryTypeName","src":"10764:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1621,"mutability":"mutable","name":"err","nameLocation":"10793:3:0","nodeType":"VariableDeclaration","scope":1641,"src":"10779:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1620,"name":"string","nodeType":"ElementaryTypeName","src":"10779:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10749:48:0"},"returnParameters":{"id":1623,"nodeType":"ParameterList","parameters":[],"src":"10807:0:0"},"scope":2124,"src":"10725:215:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1674,"nodeType":"Block","src":"11010:260:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1650,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"11024:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1651,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"11029:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11024:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1673,"nodeType":"IfStatement","src":"11020:244:0","trueBody":{"id":1672,"nodeType":"Block","src":"11032:232:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c2062206e6f7420736174697366696564205b646563696d616c2075696e745d","id":1654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11055:43:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8057606f9e67842ac0149f4a7ffdaca59331aea176cd1419e89b7b4b21bbc6d9","typeString":"literal_string \"Error: a < b not satisfied [decimal uint]\""},"value":"Error: a < b not satisfied [decimal uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8057606f9e67842ac0149f4a7ffdaca59331aea176cd1419e89b7b4b21bbc6d9","typeString":"literal_string \"Error: a < b not satisfied [decimal uint]\""}],"id":1653,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"11051:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11051:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1656,"nodeType":"EmitStatement","src":"11046:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11141:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1659,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1643,"src":"11154:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1660,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"11157:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1657,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"11118:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11118:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1662,"nodeType":"EmitStatement","src":"11113:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11208:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1665,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1645,"src":"11221:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1666,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"11224:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1663,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"11185:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11185:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1668,"nodeType":"EmitStatement","src":"11180:53:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1669,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"11247:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11247:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1671,"nodeType":"ExpressionStatement","src":"11247:6:0"}]}}]},"id":1675,"implemented":true,"kind":"function","modifiers":[],"name":"assertLtDecimal","nameLocation":"10954:15:0","nodeType":"FunctionDefinition","parameters":{"id":1648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1643,"mutability":"mutable","name":"a","nameLocation":"10975:1:0","nodeType":"VariableDeclaration","scope":1675,"src":"10970:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1642,"name":"uint","nodeType":"ElementaryTypeName","src":"10970:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"b","nameLocation":"10983:1:0","nodeType":"VariableDeclaration","scope":1675,"src":"10978:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1644,"name":"uint","nodeType":"ElementaryTypeName","src":"10978:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1647,"mutability":"mutable","name":"decimals","nameLocation":"10991:8:0","nodeType":"VariableDeclaration","scope":1675,"src":"10986:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1646,"name":"uint","nodeType":"ElementaryTypeName","src":"10986:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10969:31:0"},"returnParameters":{"id":1649,"nodeType":"ParameterList","parameters":[],"src":"11010:0:0"},"scope":2124,"src":"10945:325:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1702,"nodeType":"Block","src":"11359:133:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1686,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"11373:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1687,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"11378:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11373:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1701,"nodeType":"IfStatement","src":"11369:117:0","trueBody":{"id":1700,"nodeType":"Block","src":"11381:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11417:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1691,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"11426:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1689,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"11400:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11400:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1693,"nodeType":"EmitStatement","src":"11395:35:0"},{"expression":{"arguments":[{"id":1695,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"11460:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1696,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"11463:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1697,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"11466:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1694,"name":"assertLtDecimal","nodeType":"Identifier","overloadedDeclarations":[1613,1641,1675,1703],"referencedDeclaration":1675,"src":"11444:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11444:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1699,"nodeType":"ExpressionStatement","src":"11444:31:0"}]}}]},"id":1703,"implemented":true,"kind":"function","modifiers":[],"name":"assertLtDecimal","nameLocation":"11284:15:0","nodeType":"FunctionDefinition","parameters":{"id":1684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1677,"mutability":"mutable","name":"a","nameLocation":"11305:1:0","nodeType":"VariableDeclaration","scope":1703,"src":"11300:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1676,"name":"uint","nodeType":"ElementaryTypeName","src":"11300:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1679,"mutability":"mutable","name":"b","nameLocation":"11313:1:0","nodeType":"VariableDeclaration","scope":1703,"src":"11308:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1678,"name":"uint","nodeType":"ElementaryTypeName","src":"11308:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1681,"mutability":"mutable","name":"decimals","nameLocation":"11321:8:0","nodeType":"VariableDeclaration","scope":1703,"src":"11316:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint","nodeType":"ElementaryTypeName","src":"11316:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1683,"mutability":"mutable","name":"err","nameLocation":"11345:3:0","nodeType":"VariableDeclaration","scope":1703,"src":"11331:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1682,"name":"string","nodeType":"ElementaryTypeName","src":"11331:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11299:50:0"},"returnParameters":{"id":1685,"nodeType":"ParameterList","parameters":[],"src":"11359:0:0"},"scope":2124,"src":"11275:217:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1732,"nodeType":"Block","src":"11541:216:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1710,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"11555:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1711,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"11559:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11555:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1731,"nodeType":"IfStatement","src":"11551:200:0","trueBody":{"id":1730,"nodeType":"Block","src":"11562:189:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c3d2062206e6f7420736174697366696564205b75696e745d","id":1714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11585:36:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d5420eec28b94f3fd7dd1c7ce81f45c79bfa9fab37300faf965a8d6272e32ff","typeString":"literal_string \"Error: a <= b not satisfied [uint]\""},"value":"Error: a <= b not satisfied [uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6d5420eec28b94f3fd7dd1c7ce81f45c79bfa9fab37300faf965a8d6272e32ff","typeString":"literal_string \"Error: a <= b not satisfied [uint]\""}],"id":1713,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"11581:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11581:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1716,"nodeType":"EmitStatement","src":"11576:46:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11656:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1719,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"11669:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1717,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"11641:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11641:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1721,"nodeType":"EmitStatement","src":"11636:35:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11705:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1724,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"11718:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1722,"name":"log_named_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"11690:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256)"}},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11690:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1726,"nodeType":"EmitStatement","src":"11685:35:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1727,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"11734:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11734:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1729,"nodeType":"ExpressionStatement","src":"11734:6:0"}]}}]},"id":1733,"implemented":true,"kind":"function","modifiers":[],"name":"assertLe","nameLocation":"11507:8:0","nodeType":"FunctionDefinition","parameters":{"id":1708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"a","nameLocation":"11521:1:0","nodeType":"VariableDeclaration","scope":1733,"src":"11516:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint","nodeType":"ElementaryTypeName","src":"11516:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1707,"mutability":"mutable","name":"b","nameLocation":"11529:1:0","nodeType":"VariableDeclaration","scope":1733,"src":"11524:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1706,"name":"uint","nodeType":"ElementaryTypeName","src":"11524:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11515:16:0"},"returnParameters":{"id":1709,"nodeType":"ParameterList","parameters":[],"src":"11541:0:0"},"scope":2124,"src":"11498:259:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1757,"nodeType":"Block","src":"11824:115:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1742,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"11838:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1743,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1737,"src":"11842:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11838:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1756,"nodeType":"IfStatement","src":"11834:99:0","trueBody":{"id":1755,"nodeType":"Block","src":"11845:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11881:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1747,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"11890:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1745,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"11864:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11864:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1749,"nodeType":"EmitStatement","src":"11859:35:0"},{"expression":{"arguments":[{"id":1751,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"11917:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1752,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1737,"src":"11920:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1750,"name":"assertLe","nodeType":"Identifier","overloadedDeclarations":[1733,1758,1788,1813],"referencedDeclaration":1733,"src":"11908:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11908:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1754,"nodeType":"ExpressionStatement","src":"11908:14:0"}]}}]},"id":1758,"implemented":true,"kind":"function","modifiers":[],"name":"assertLe","nameLocation":"11771:8:0","nodeType":"FunctionDefinition","parameters":{"id":1740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1735,"mutability":"mutable","name":"a","nameLocation":"11785:1:0","nodeType":"VariableDeclaration","scope":1758,"src":"11780:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1734,"name":"uint","nodeType":"ElementaryTypeName","src":"11780:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1737,"mutability":"mutable","name":"b","nameLocation":"11793:1:0","nodeType":"VariableDeclaration","scope":1758,"src":"11788:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1736,"name":"uint","nodeType":"ElementaryTypeName","src":"11788:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1739,"mutability":"mutable","name":"err","nameLocation":"11810:3:0","nodeType":"VariableDeclaration","scope":1758,"src":"11796:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1738,"name":"string","nodeType":"ElementaryTypeName","src":"11796:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11779:35:0"},"returnParameters":{"id":1741,"nodeType":"ParameterList","parameters":[],"src":"11824:0:0"},"scope":2124,"src":"11762:177:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1787,"nodeType":"Block","src":"11985:213:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1765,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"11999:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1766,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"12003:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11999:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1786,"nodeType":"IfStatement","src":"11995:197:0","trueBody":{"id":1785,"nodeType":"Block","src":"12006:186:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c3d2062206e6f7420736174697366696564205b696e745d","id":1769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12029:35:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_558ba41c44b763b352271d6c22f0cb02f5c0c4dbb25ed68172916a4e6a662555","typeString":"literal_string \"Error: a <= b not satisfied [int]\""},"value":"Error: a <= b not satisfied [int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_558ba41c44b763b352271d6c22f0cb02f5c0c4dbb25ed68172916a4e6a662555","typeString":"literal_string \"Error: a <= b not satisfied [int]\""}],"id":1768,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"12025:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12025:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1771,"nodeType":"EmitStatement","src":"12020:45:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12098:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1760,"src":"12111:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1772,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"12084:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12084:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1776,"nodeType":"EmitStatement","src":"12079:34:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12146:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1779,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"12159:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1777,"name":"log_named_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"12132:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$returns$__$","typeString":"function (string memory,int256)"}},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12132:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1781,"nodeType":"EmitStatement","src":"12127:34:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1782,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"12175:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12175:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1784,"nodeType":"ExpressionStatement","src":"12175:6:0"}]}}]},"id":1788,"implemented":true,"kind":"function","modifiers":[],"name":"assertLe","nameLocation":"11953:8:0","nodeType":"FunctionDefinition","parameters":{"id":1763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1760,"mutability":"mutable","name":"a","nameLocation":"11966:1:0","nodeType":"VariableDeclaration","scope":1788,"src":"11962:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1759,"name":"int","nodeType":"ElementaryTypeName","src":"11962:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1762,"mutability":"mutable","name":"b","nameLocation":"11973:1:0","nodeType":"VariableDeclaration","scope":1788,"src":"11969:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1761,"name":"int","nodeType":"ElementaryTypeName","src":"11969:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"11961:14:0"},"returnParameters":{"id":1764,"nodeType":"ParameterList","parameters":[],"src":"11985:0:0"},"scope":2124,"src":"11944:254:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1812,"nodeType":"Block","src":"12263:115:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1797,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"12277:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1798,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"12281:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12277:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1811,"nodeType":"IfStatement","src":"12273:99:0","trueBody":{"id":1810,"nodeType":"Block","src":"12284:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12320:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1802,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1794,"src":"12329:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1800,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"12303:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12303:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1804,"nodeType":"EmitStatement","src":"12298:35:0"},{"expression":{"arguments":[{"id":1806,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"12356:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1807,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"12359:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1805,"name":"assertLe","nodeType":"Identifier","overloadedDeclarations":[1733,1758,1788,1813],"referencedDeclaration":1788,"src":"12347:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$returns$__$","typeString":"function (int256,int256)"}},"id":1808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12347:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1809,"nodeType":"ExpressionStatement","src":"12347:14:0"}]}}]},"id":1813,"implemented":true,"kind":"function","modifiers":[],"name":"assertLe","nameLocation":"12212:8:0","nodeType":"FunctionDefinition","parameters":{"id":1795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1790,"mutability":"mutable","name":"a","nameLocation":"12225:1:0","nodeType":"VariableDeclaration","scope":1813,"src":"12221:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1789,"name":"int","nodeType":"ElementaryTypeName","src":"12221:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1792,"mutability":"mutable","name":"b","nameLocation":"12232:1:0","nodeType":"VariableDeclaration","scope":1813,"src":"12228:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1791,"name":"int","nodeType":"ElementaryTypeName","src":"12228:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1794,"mutability":"mutable","name":"err","nameLocation":"12249:3:0","nodeType":"VariableDeclaration","scope":1813,"src":"12235:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1793,"name":"string","nodeType":"ElementaryTypeName","src":"12235:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12220:33:0"},"returnParameters":{"id":1796,"nodeType":"ParameterList","parameters":[],"src":"12263:0:0"},"scope":2124,"src":"12203:175:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1846,"nodeType":"Block","src":"12446:257:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1815,"src":"12460:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1823,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"12464:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12460:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1845,"nodeType":"IfStatement","src":"12456:241:0","trueBody":{"id":1844,"nodeType":"Block","src":"12467:230:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c3d2062206e6f7420736174697366696564205b646563696d616c20696e745d","id":1826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12490:43:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a855fbfffc345e8a0ab544e824618dabd995fdc5bda653c7d4869b57deb1d23a","typeString":"literal_string \"Error: a <= b not satisfied [decimal int]\""},"value":"Error: a <= b not satisfied [decimal int]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a855fbfffc345e8a0ab544e824618dabd995fdc5bda653c7d4869b57deb1d23a","typeString":"literal_string \"Error: a <= b not satisfied [decimal int]\""}],"id":1825,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"12486:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12486:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1828,"nodeType":"EmitStatement","src":"12481:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12575:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1831,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1815,"src":"12588:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1832,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"12591:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1829,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"12553:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12553:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1834,"nodeType":"EmitStatement","src":"12548:52:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12641:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1837,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"12654:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1838,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"12657:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1835,"name":"log_named_decimal_int","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"12619:21:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (string memory,int256,uint256)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12619:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1840,"nodeType":"EmitStatement","src":"12614:52:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1841,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"12680:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12680:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1843,"nodeType":"ExpressionStatement","src":"12680:6:0"}]}}]},"id":1847,"implemented":true,"kind":"function","modifiers":[],"name":"assertLeDecimal","nameLocation":"12392:15:0","nodeType":"FunctionDefinition","parameters":{"id":1820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1815,"mutability":"mutable","name":"a","nameLocation":"12412:1:0","nodeType":"VariableDeclaration","scope":1847,"src":"12408:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1814,"name":"int","nodeType":"ElementaryTypeName","src":"12408:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1817,"mutability":"mutable","name":"b","nameLocation":"12419:1:0","nodeType":"VariableDeclaration","scope":1847,"src":"12415:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1816,"name":"int","nodeType":"ElementaryTypeName","src":"12415:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1819,"mutability":"mutable","name":"decimals","nameLocation":"12427:8:0","nodeType":"VariableDeclaration","scope":1847,"src":"12422:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1818,"name":"uint","nodeType":"ElementaryTypeName","src":"12422:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12407:29:0"},"returnParameters":{"id":1821,"nodeType":"ParameterList","parameters":[],"src":"12446:0:0"},"scope":2124,"src":"12383:320:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1874,"nodeType":"Block","src":"12790:132:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1858,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1849,"src":"12804:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1859,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1851,"src":"12808:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12804:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1873,"nodeType":"IfStatement","src":"12800:116:0","trueBody":{"id":1872,"nodeType":"Block","src":"12811:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12847:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1863,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"12856:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1861,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"12830:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12830:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1865,"nodeType":"EmitStatement","src":"12825:35:0"},{"expression":{"arguments":[{"id":1867,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1849,"src":"12890:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1868,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1851,"src":"12893:1:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":1869,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1853,"src":"12896:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1866,"name":"assertLeDecimal","nodeType":"Identifier","overloadedDeclarations":[1847,1875,1909,1937],"referencedDeclaration":1847,"src":"12874:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_int256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (int256,int256,uint256)"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12874:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1871,"nodeType":"ExpressionStatement","src":"12874:31:0"}]}}]},"id":1875,"implemented":true,"kind":"function","modifiers":[],"name":"assertLeDecimal","nameLocation":"12717:15:0","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1849,"mutability":"mutable","name":"a","nameLocation":"12737:1:0","nodeType":"VariableDeclaration","scope":1875,"src":"12733:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1848,"name":"int","nodeType":"ElementaryTypeName","src":"12733:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1851,"mutability":"mutable","name":"b","nameLocation":"12744:1:0","nodeType":"VariableDeclaration","scope":1875,"src":"12740:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1850,"name":"int","nodeType":"ElementaryTypeName","src":"12740:3:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1853,"mutability":"mutable","name":"decimals","nameLocation":"12752:8:0","nodeType":"VariableDeclaration","scope":1875,"src":"12747:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1852,"name":"uint","nodeType":"ElementaryTypeName","src":"12747:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1855,"mutability":"mutable","name":"err","nameLocation":"12776:3:0","nodeType":"VariableDeclaration","scope":1875,"src":"12762:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1854,"name":"string","nodeType":"ElementaryTypeName","src":"12762:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"12732:48:0"},"returnParameters":{"id":1857,"nodeType":"ParameterList","parameters":[],"src":"12790:0:0"},"scope":2124,"src":"12708:214:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1908,"nodeType":"Block","src":"12992:260:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1884,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"13006:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1885,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"13010:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13006:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1907,"nodeType":"IfStatement","src":"13002:244:0","trueBody":{"id":1906,"nodeType":"Block","src":"13013:233:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203c3d2062206e6f7420736174697366696564205b646563696d616c2075696e745d","id":1888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13036:44:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_32bce37771ce1d01bc601c73b51f2296c0d8e2a50c2d19a6ac89c6b917715c51","typeString":"literal_string \"Error: a <= b not satisfied [decimal uint]\""},"value":"Error: a <= b not satisfied [decimal uint]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32bce37771ce1d01bc601c73b51f2296c0d8e2a50c2d19a6ac89c6b917715c51","typeString":"literal_string \"Error: a <= b not satisfied [decimal uint]\""}],"id":1887,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"13032:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13032:49:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1890,"nodeType":"EmitStatement","src":"13027:54:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13123:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1893,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"13136:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1894,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1881,"src":"13139:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1891,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"13100:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13100:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1896,"nodeType":"EmitStatement","src":"13095:53:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13190:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1899,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"13203:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1900,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1881,"src":"13206:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1897,"name":"log_named_decimal_uint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"13167:22:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256,uint256)"}},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13167:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1902,"nodeType":"EmitStatement","src":"13162:53:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1903,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"13229:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13229:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1905,"nodeType":"ExpressionStatement","src":"13229:6:0"}]}}]},"id":1909,"implemented":true,"kind":"function","modifiers":[],"name":"assertLeDecimal","nameLocation":"12936:15:0","nodeType":"FunctionDefinition","parameters":{"id":1882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1877,"mutability":"mutable","name":"a","nameLocation":"12957:1:0","nodeType":"VariableDeclaration","scope":1909,"src":"12952:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1876,"name":"uint","nodeType":"ElementaryTypeName","src":"12952:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1879,"mutability":"mutable","name":"b","nameLocation":"12965:1:0","nodeType":"VariableDeclaration","scope":1909,"src":"12960:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1878,"name":"uint","nodeType":"ElementaryTypeName","src":"12960:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1881,"mutability":"mutable","name":"decimals","nameLocation":"12973:8:0","nodeType":"VariableDeclaration","scope":1909,"src":"12968:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1880,"name":"uint","nodeType":"ElementaryTypeName","src":"12968:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12951:31:0"},"returnParameters":{"id":1883,"nodeType":"ParameterList","parameters":[],"src":"12992:0:0"},"scope":2124,"src":"12927:325:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1936,"nodeType":"Block","src":"13341:132:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1920,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1911,"src":"13355:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1921,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"13359:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13355:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1935,"nodeType":"IfStatement","src":"13351:116:0","trueBody":{"id":1934,"nodeType":"Block","src":"13362:105:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":1924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13398:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":1925,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1917,"src":"13407:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1923,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"13381:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13381:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1927,"nodeType":"EmitStatement","src":"13376:35:0"},{"expression":{"arguments":[{"id":1929,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1911,"src":"13441:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1930,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"13444:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1931,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1915,"src":"13447:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1928,"name":"assertGeDecimal","nodeType":"Identifier","overloadedDeclarations":[1379,1407,1441,1469],"referencedDeclaration":1441,"src":"13425:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13425:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1933,"nodeType":"ExpressionStatement","src":"13425:31:0"}]}}]},"id":1937,"implemented":true,"kind":"function","modifiers":[],"name":"assertLeDecimal","nameLocation":"13266:15:0","nodeType":"FunctionDefinition","parameters":{"id":1918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1911,"mutability":"mutable","name":"a","nameLocation":"13287:1:0","nodeType":"VariableDeclaration","scope":1937,"src":"13282:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1910,"name":"uint","nodeType":"ElementaryTypeName","src":"13282:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1913,"mutability":"mutable","name":"b","nameLocation":"13295:1:0","nodeType":"VariableDeclaration","scope":1937,"src":"13290:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1912,"name":"uint","nodeType":"ElementaryTypeName","src":"13290:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1915,"mutability":"mutable","name":"decimals","nameLocation":"13303:8:0","nodeType":"VariableDeclaration","scope":1937,"src":"13298:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1914,"name":"uint","nodeType":"ElementaryTypeName","src":"13298:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1917,"mutability":"mutable","name":"err","nameLocation":"13327:3:0","nodeType":"VariableDeclaration","scope":1937,"src":"13313:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1916,"name":"string","nodeType":"ElementaryTypeName","src":"13313:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13281:50:0"},"returnParameters":{"id":1919,"nodeType":"ParameterList","parameters":[],"src":"13341:0:0"},"scope":2124,"src":"13257:216:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1976,"nodeType":"Block","src":"13540:281:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1947,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"13581:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1945,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13564:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13564:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13564:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1944,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13554:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13554:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"id":1953,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"13615:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1951,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13598:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13598:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13598:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1950,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13588:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13588:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13554:64:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1975,"nodeType":"IfStatement","src":"13550:265:0","trueBody":{"id":1974,"nodeType":"Block","src":"13620:195:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472696e675d","id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13643:38:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e","typeString":"literal_string \"Error: a == b not satisfied [string]\""},"value":"Error: a == b not satisfied [string]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_58e3ca0e65e73c038df3db6a7cab1bf7de300d13038b802ce0f4435889c48e5e","typeString":"literal_string \"Error: a == b not satisfied [string]\""}],"id":1957,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"13639:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13639:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1960,"nodeType":"EmitStatement","src":"13634:48:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652061","id":1962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13718:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},"value":" Value a"},{"id":1963,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"13731:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c592b529b874569f165479a5a4380dedf000796f11e04035f76bfa7310b31d26","typeString":"literal_string \" Value a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1961,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"13701:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13701:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1965,"nodeType":"EmitStatement","src":"13696:37:0"},{"eventCall":{"arguments":[{"hexValue":"202056616c75652062","id":1967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13769:11:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},"value":" Value b"},{"id":1968,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"13782:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e4b1d025132960c3fb1a582cf2366864dc416744d1b9770aa69fe3749623ebc3","typeString":"literal_string \" Value b\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1966,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"13752:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13752:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1970,"nodeType":"EmitStatement","src":"13747:37:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1971,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"13798:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13798:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1973,"nodeType":"ExpressionStatement","src":"13798:6:0"}]}}]},"id":1977,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"13488:8:0","nodeType":"FunctionDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1939,"mutability":"mutable","name":"a","nameLocation":"13511:1:0","nodeType":"VariableDeclaration","scope":1977,"src":"13497:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1938,"name":"string","nodeType":"ElementaryTypeName","src":"13497:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1941,"mutability":"mutable","name":"b","nameLocation":"13528:1:0","nodeType":"VariableDeclaration","scope":1977,"src":"13514:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1940,"name":"string","nodeType":"ElementaryTypeName","src":"13514:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13496:34:0"},"returnParameters":{"id":1943,"nodeType":"ParameterList","parameters":[],"src":"13540:0:0"},"scope":2124,"src":"13479:342:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2011,"nodeType":"Block","src":"13906:174:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1989,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"13947:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1987,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13930:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13930:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13930:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1986,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13920:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13920:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"id":1995,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"13981:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1993,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13964:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"13964:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13964:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1992,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13954:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13954:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13920:64:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2010,"nodeType":"IfStatement","src":"13916:158:0","trueBody":{"id":2009,"nodeType":"Block","src":"13986:88:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":2000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14022:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":2001,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"14031:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1999,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"14005:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14005:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2003,"nodeType":"EmitStatement","src":"14000:35:0"},{"expression":{"arguments":[{"id":2005,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"14058:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2006,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"14061:1:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2004,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":1977,"src":"14049:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":2007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14049:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2008,"nodeType":"ExpressionStatement","src":"14049:14:0"}]}}]},"id":2012,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq","nameLocation":"13835:8:0","nodeType":"FunctionDefinition","parameters":{"id":1984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1979,"mutability":"mutable","name":"a","nameLocation":"13858:1:0","nodeType":"VariableDeclaration","scope":2012,"src":"13844:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1978,"name":"string","nodeType":"ElementaryTypeName","src":"13844:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"b","nameLocation":"13875:1:0","nodeType":"VariableDeclaration","scope":2012,"src":"13861:15:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1980,"name":"string","nodeType":"ElementaryTypeName","src":"13861:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1983,"mutability":"mutable","name":"err","nameLocation":"13892:3:0","nodeType":"VariableDeclaration","scope":2012,"src":"13878:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1982,"name":"string","nodeType":"ElementaryTypeName","src":"13878:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13843:53:0"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[],"src":"13906:0:0"},"scope":2124,"src":"13826:254:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2063,"nodeType":"Block","src":"14168:263:0","statements":[{"expression":{"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2021,"name":"ok","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"14178:2:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14183:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"14178:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2024,"nodeType":"ExpressionStatement","src":"14178:9:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2025,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"14201:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14201:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2027,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"14213:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14213:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14201:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2061,"nodeType":"Block","src":"14390:35:0","statements":[{"expression":{"id":2059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2057,"name":"ok","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"14404:2:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14409:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"14404:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2060,"nodeType":"ExpressionStatement","src":"14404:10:0"}]},"id":2062,"nodeType":"IfStatement","src":"14197:228:0","trueBody":{"id":2056,"nodeType":"Block","src":"14223:161:0","statements":[{"body":{"id":2054,"nodeType":"Block","src":"14273:101:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2041,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"14295:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2043,"indexExpression":{"id":2042,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"14297:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14295:4:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":2044,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"14303:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2046,"indexExpression":{"id":2045,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"14305:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14303:4:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"14295:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2053,"nodeType":"IfStatement","src":"14291:69:0","trueBody":{"id":2052,"nodeType":"Block","src":"14309:51:0","statements":[{"expression":{"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2048,"name":"ok","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"14331:2:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14336:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"14331:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2051,"nodeType":"ExpressionStatement","src":"14331:10:0"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2034,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"14254:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2035,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"14258:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"14258:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14254:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2055,"initializationExpression":{"assignments":[2031],"declarations":[{"constant":false,"id":2031,"mutability":"mutable","name":"i","nameLocation":"14247:1:0","nodeType":"VariableDeclaration","scope":2055,"src":"14242:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint","nodeType":"ElementaryTypeName","src":"14242:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2033,"initialValue":{"hexValue":"30","id":2032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14251:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14242:10:0"},"loopExpression":{"expression":{"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14268:3:0","subExpression":{"id":2038,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"14268:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2040,"nodeType":"ExpressionStatement","src":"14268:3:0"},"nodeType":"ForStatement","src":"14237:137:0"}]}}]},"id":2064,"implemented":true,"kind":"function","modifiers":[],"name":"checkEq0","nameLocation":"14095:8:0","nodeType":"FunctionDefinition","parameters":{"id":2017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2014,"mutability":"mutable","name":"a","nameLocation":"14117:1:0","nodeType":"VariableDeclaration","scope":2064,"src":"14104:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2013,"name":"bytes","nodeType":"ElementaryTypeName","src":"14104:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2016,"mutability":"mutable","name":"b","nameLocation":"14133:1:0","nodeType":"VariableDeclaration","scope":2064,"src":"14120:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2015,"name":"bytes","nodeType":"ElementaryTypeName","src":"14120:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14103:32:0"},"returnParameters":{"id":2020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2019,"mutability":"mutable","name":"ok","nameLocation":"14164:2:0","nodeType":"VariableDeclaration","scope":2064,"src":"14159:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2018,"name":"bool","nodeType":"ElementaryTypeName","src":"14159:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14158:9:0"},"scope":2124,"src":"14086:345:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2095,"nodeType":"Block","src":"14496:231:0","statements":[{"condition":{"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14510:15:0","subExpression":{"arguments":[{"id":2072,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"14520:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2073,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"14523:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2071,"name":"checkEq0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"14511:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":2074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14511:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2094,"nodeType":"IfStatement","src":"14506:215:0","trueBody":{"id":2093,"nodeType":"Block","src":"14527:194:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797465735d","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14550:37:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9bb7b728691fe2872efdd27bd07c4a95b3586c3b7ec3afa731a7c21a76e39cfc","typeString":"literal_string \"Error: a == b not satisfied [bytes]\""},"value":"Error: a == b not satisfied [bytes]"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9bb7b728691fe2872efdd27bd07c4a95b3586c3b7ec3afa731a7c21a76e39cfc","typeString":"literal_string \"Error: a == b not satisfied [bytes]\""}],"id":2076,"name":"log","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"14546:3:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14546:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2079,"nodeType":"EmitStatement","src":"14541:47:0"},{"eventCall":{"arguments":[{"hexValue":"20204578706563746564","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14623:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},"value":" Expected"},{"id":2082,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2066,"src":"14637:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42fa07d7c51ce5de92a0fc65dbf7e7800814fd01c258dc50e84d5be59184bf0b","typeString":"literal_string \" Expected\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2080,"name":"log_named_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"14607:15:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (string memory,bytes memory)"}},"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14607:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2084,"nodeType":"EmitStatement","src":"14602:37:0"},{"eventCall":{"arguments":[{"hexValue":"2020202041637475616c","id":2086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14674:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},"value":" Actual"},{"id":2087,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2068,"src":"14688:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7896f3f645b3ba89da46bf231a5df16e525e587a84bc9b284dfb39958fb219b","typeString":"literal_string \" Actual\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2085,"name":"log_named_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"14658:15:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (string memory,bytes memory)"}},"id":2088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14658:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2089,"nodeType":"EmitStatement","src":"14653:37:0"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2090,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"14704:4:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14704:6:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2092,"nodeType":"ExpressionStatement","src":"14704:6:0"}]}}]},"id":2096,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq0","nameLocation":"14445:9:0","nodeType":"FunctionDefinition","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2066,"mutability":"mutable","name":"a","nameLocation":"14468:1:0","nodeType":"VariableDeclaration","scope":2096,"src":"14455:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2065,"name":"bytes","nodeType":"ElementaryTypeName","src":"14455:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2068,"mutability":"mutable","name":"b","nameLocation":"14484:1:0","nodeType":"VariableDeclaration","scope":2096,"src":"14471:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2067,"name":"bytes","nodeType":"ElementaryTypeName","src":"14471:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14454:32:0"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"14496:0:0"},"scope":2124,"src":"14436:291:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2122,"nodeType":"Block","src":"14811:126:0","statements":[{"condition":{"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14825:15:0","subExpression":{"arguments":[{"id":2106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"14835:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2107,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"14838:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2105,"name":"checkEq0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"14826:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":2108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14826:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2121,"nodeType":"IfStatement","src":"14821:110:0","trueBody":{"id":2120,"nodeType":"Block","src":"14842:89:0","statements":[{"eventCall":{"arguments":[{"hexValue":"4572726f72","id":2111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14878:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},"value":"Error"},{"id":2112,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"14887:3:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e342daa49723ff3485f4ff5f755a17b8bc9c3c33bbd312ceee37c94eebfe45c1","typeString":"literal_string \"Error\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2110,"name":"log_named_string","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"14861:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14861:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2114,"nodeType":"EmitStatement","src":"14856:35:0"},{"expression":{"arguments":[{"id":2116,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"14915:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2117,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"14918:1:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2115,"name":"assertEq0","nodeType":"Identifier","overloadedDeclarations":[2096,2123],"referencedDeclaration":2096,"src":"14905:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory,bytes memory)"}},"id":2118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14905:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2119,"nodeType":"ExpressionStatement","src":"14905:15:0"}]}}]},"id":2123,"implemented":true,"kind":"function","modifiers":[],"name":"assertEq0","nameLocation":"14741:9:0","nodeType":"FunctionDefinition","parameters":{"id":2103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2098,"mutability":"mutable","name":"a","nameLocation":"14764:1:0","nodeType":"VariableDeclaration","scope":2123,"src":"14751:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2097,"name":"bytes","nodeType":"ElementaryTypeName","src":"14751:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2100,"mutability":"mutable","name":"b","nameLocation":"14780:1:0","nodeType":"VariableDeclaration","scope":2123,"src":"14767:14:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2099,"name":"bytes","nodeType":"ElementaryTypeName","src":"14767:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2102,"mutability":"mutable","name":"err","nameLocation":"14797:3:0","nodeType":"VariableDeclaration","scope":2123,"src":"14783:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2101,"name":"string","nodeType":"ElementaryTypeName","src":"14783:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14750:51:0"},"returnParameters":{"id":2104,"nodeType":"ParameterList","parameters":[],"src":"14811:0:0"},"scope":2124,"src":"14732:205:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2125,"src":"716:14223:0","usedErrors":[]}],"src":"689:14251:0"},"id":0},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","exportedSymbols":{"Context":[2146],"Ownable":[443]},"id":444,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":341,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:1"},{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","file":"../utils/Context.sol","id":342,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":444,"sourceUnit":2147,"src":"58:30:1","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":344,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":2146,"src":"614:7:1"},"id":345,"nodeType":"InheritanceSpecifier","src":"614:7:1"}],"contractDependencies":[],"contractKind":"contract","documentation":{"id":343,"nodeType":"StructuredDocumentation","src":"90:494:1","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":443,"linearizedBaseContracts":[443,2146],"name":"Ownable","nameLocation":"603:7:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":347,"mutability":"mutable","name":"_owner","nameLocation":"644:6:1","nodeType":"VariableDeclaration","scope":443,"src":"628:22:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":346,"name":"address","nodeType":"ElementaryTypeName","src":"628:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"id":353,"name":"OwnershipTransferred","nameLocation":"663:20:1","nodeType":"EventDefinition","parameters":{"id":352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"700:13:1","nodeType":"VariableDeclaration","scope":353,"src":"684:29:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":348,"name":"address","nodeType":"ElementaryTypeName","src":"684:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":351,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"731:8:1","nodeType":"VariableDeclaration","scope":353,"src":"715:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":350,"name":"address","nodeType":"ElementaryTypeName","src":"715:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"683:57:1"},"src":"657:84:1"},{"body":{"id":362,"nodeType":"Block","src":"857:40:1","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":358,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"877:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"877:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":357,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"867:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":361,"nodeType":"ExpressionStatement","src":"867:23:1"}]},"documentation":{"id":354,"nodeType":"StructuredDocumentation","src":"747:91:1","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":363,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":355,"nodeType":"ParameterList","parameters":[],"src":"854:2:1"},"returnParameters":{"id":356,"nodeType":"ParameterList","parameters":[],"src":"857:0:1"},"scope":443,"src":"843:54:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":371,"nodeType":"Block","src":"1028:30:1","statements":[{"expression":{"id":369,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"1045:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":368,"id":370,"nodeType":"Return","src":"1038:13:1"}]},"documentation":{"id":364,"nodeType":"StructuredDocumentation","src":"903:65:1","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":372,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"982:5:1","nodeType":"FunctionDefinition","parameters":{"id":365,"nodeType":"ParameterList","parameters":[],"src":"987:2:1"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":372,"src":"1019:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1018:9:1"},"scope":443,"src":"973:85:1","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":385,"nodeType":"Block","src":"1167:96:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":376,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"1185:5:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1185:7:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":378,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"1196:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1196:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1185:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1210:34:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":375,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1177:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1177:68:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":383,"nodeType":"ExpressionStatement","src":"1177:68:1"},{"id":384,"nodeType":"PlaceholderStatement","src":"1255:1:1"}]},"documentation":{"id":373,"nodeType":"StructuredDocumentation","src":"1064:77:1","text":" @dev Throws if called by any account other than the owner."},"id":386,"name":"onlyOwner","nameLocation":"1155:9:1","nodeType":"ModifierDefinition","parameters":{"id":374,"nodeType":"ParameterList","parameters":[],"src":"1164:2:1"},"src":"1146:117:1","virtual":false,"visibility":"internal"},{"body":{"id":399,"nodeType":"Block","src":"1659:38:1","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1687:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1679:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":393,"name":"address","nodeType":"ElementaryTypeName","src":"1679:7:1","typeDescriptions":{}}},"id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1679:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":392,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"1669:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1669:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":398,"nodeType":"ExpressionStatement","src":"1669:21:1"}]},"documentation":{"id":387,"nodeType":"StructuredDocumentation","src":"1269:331:1","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","id":400,"implemented":true,"kind":"function","modifiers":[{"id":390,"kind":"modifierInvocation","modifierName":{"id":389,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":386,"src":"1649:9:1"},"nodeType":"ModifierInvocation","src":"1649:9:1"}],"name":"renounceOwnership","nameLocation":"1614:17:1","nodeType":"FunctionDefinition","parameters":{"id":388,"nodeType":"ParameterList","parameters":[],"src":"1631:2:1"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"1659:0:1"},"scope":443,"src":"1605:92:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":422,"nodeType":"Block","src":"1916:119:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"1934:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1954:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1946:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":410,"name":"address","nodeType":"ElementaryTypeName","src":"1946:7:1","typeDescriptions":{}}},"id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1946:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1934:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1958:40:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":408,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1926:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:73:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":417,"nodeType":"ExpressionStatement","src":"1926:73:1"},{"expression":{"arguments":[{"id":419,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"2019:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":418,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"2009:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:19:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":421,"nodeType":"ExpressionStatement","src":"2009:19:1"}]},"documentation":{"id":401,"nodeType":"StructuredDocumentation","src":"1703:138:1","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":423,"implemented":true,"kind":"function","modifiers":[{"id":406,"kind":"modifierInvocation","modifierName":{"id":405,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":386,"src":"1906:9:1"},"nodeType":"ModifierInvocation","src":"1906:9:1"}],"name":"transferOwnership","nameLocation":"1855:17:1","nodeType":"FunctionDefinition","parameters":{"id":404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":403,"mutability":"mutable","name":"newOwner","nameLocation":"1881:8:1","nodeType":"VariableDeclaration","scope":423,"src":"1873:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":402,"name":"address","nodeType":"ElementaryTypeName","src":"1873:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1872:18:1"},"returnParameters":{"id":407,"nodeType":"ParameterList","parameters":[],"src":"1916:0:1"},"scope":443,"src":"1846:189:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":441,"nodeType":"Block","src":"2086:124:1","statements":[{"assignments":[429],"declarations":[{"constant":false,"id":429,"mutability":"mutable","name":"oldOwner","nameLocation":"2104:8:1","nodeType":"VariableDeclaration","scope":441,"src":"2096:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":428,"name":"address","nodeType":"ElementaryTypeName","src":"2096:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":431,"initialValue":{"id":430,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"2115:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2096:25:1"},{"expression":{"id":434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":432,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":347,"src":"2131:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":433,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":425,"src":"2140:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2131:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":435,"nodeType":"ExpressionStatement","src":"2131:17:1"},{"eventCall":{"arguments":[{"id":437,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"2184:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":438,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":425,"src":"2194:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":436,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":353,"src":"2163:20:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2163:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":440,"nodeType":"EmitStatement","src":"2158:45:1"}]},"id":442,"implemented":true,"kind":"function","modifiers":[],"name":"_setOwner","nameLocation":"2050:9:1","nodeType":"FunctionDefinition","parameters":{"id":426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":425,"mutability":"mutable","name":"newOwner","nameLocation":"2068:8:1","nodeType":"VariableDeclaration","scope":442,"src":"2060:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":424,"name":"address","nodeType":"ElementaryTypeName","src":"2060:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2059:18:1"},"returnParameters":{"id":427,"nodeType":"ParameterList","parameters":[],"src":"2086:0:1"},"scope":443,"src":"2041:169:1","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":444,"src":"585:1627:1","usedErrors":[]}],"src":"33:2180:1"},"id":1},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","exportedSymbols":{"Context":[2146]},"id":2147,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2126,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:2"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":2127,"nodeType":"StructuredDocumentation","src":"58:496:2","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2146,"linearizedBaseContracts":[2146],"name":"Context","nameLocation":"573:7:2","nodeType":"ContractDefinition","nodes":[{"body":{"id":2135,"nodeType":"Block","src":"649:34:2","statements":[{"expression":{"expression":{"id":2132,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"666:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"666:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2131,"id":2134,"nodeType":"Return","src":"659:17:2"}]},"id":2136,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"596:10:2","nodeType":"FunctionDefinition","parameters":{"id":2128,"nodeType":"ParameterList","parameters":[],"src":"606:2:2"},"returnParameters":{"id":2131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2136,"src":"640:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2129,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"639:9:2"},"scope":2146,"src":"587:96:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2144,"nodeType":"Block","src":"756:32:2","statements":[{"expression":{"expression":{"id":2141,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"773:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"773:8:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2140,"id":2143,"nodeType":"Return","src":"766:15:2"}]},"id":2145,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"698:8:2","nodeType":"FunctionDefinition","parameters":{"id":2137,"nodeType":"ParameterList","parameters":[],"src":"706:2:2"},"returnParameters":{"id":2140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2145,"src":"740:14:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2138,"name":"bytes","nodeType":"ElementaryTypeName","src":"740:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"739:16:2"},"scope":2146,"src":"689:99:2","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2147,"src":"555:235:2","usedErrors":[]}],"src":"33:758:2"},"id":2},"src/Greeter.sol":{"ast":{"absolutePath":"src/Greeter.sol","exportedSymbols":{"Context":[2146],"Errors":[9],"Greeter":[60],"Ownable":[443]},"id":61,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:3"},{"absolutePath":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":61,"sourceUnit":444,"src":"63:52:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":9,"linearizedBaseContracts":[9],"name":"Errors","nameLocation":"125:6:3","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5,"mutability":"constant","name":"InvalidBlockNumber","nameLocation":"154:18:3","nodeType":"VariableDeclaration","scope":9,"src":"138:72:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3,"name":"string","nodeType":"ElementaryTypeName","src":"138:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"696e76616c696420626c6f636b206e756d6265722c20706c656173652077616974","id":4,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"175:35:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1c23f7d2f1d89d9db6fc85cd1c3a6147ee20afc139f9af42aa882f91bb3961a","typeString":"literal_string \"invalid block number, please wait\""},"value":"invalid block number, please wait"},"visibility":"internal"},{"constant":true,"id":8,"mutability":"constant","name":"CannotGm","nameLocation":"232:8:3","nodeType":"VariableDeclaration","scope":9,"src":"216:49:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6,"name":"string","nodeType":"ElementaryTypeName","src":"216:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"63616e6e6f74206772656574207769746820676d","id":7,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"243:22:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebb1895604b03c59880a03a6a0f18a4ef93dcd282873d14836ac4de66b883c95","typeString":"literal_string \"cannot greet with gm\""},"value":"cannot greet with gm"},"visibility":"internal"}],"scope":61,"src":"117:151:3","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":10,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":443,"src":"290:7:3"},"id":11,"nodeType":"InheritanceSpecifier","src":"290:7:3"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":60,"linearizedBaseContracts":[60,443,2146],"name":"Greeter","nameLocation":"279:7:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"ef690cc0","id":13,"mutability":"mutable","name":"greeting","nameLocation":"318:8:3","nodeType":"VariableDeclaration","scope":60,"src":"304:22:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":12,"name":"string","nodeType":"ElementaryTypeName","src":"304:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"public"},{"body":{"id":33,"nodeType":"Block","src":"364:100:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"382:5:3","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"382:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3130","id":21,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"397:2:3","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"382:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":23,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"403:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"382:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":25,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"406:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9_$","typeString":"type(library Errors)"}},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"InvalidBlockNumber","nodeType":"MemberAccess","referencedDeclaration":5,"src":"406:25:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":18,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"374:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"374:58:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28,"nodeType":"ExpressionStatement","src":"374:58:3"},{"expression":{"id":31,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29,"name":"greeting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"442:8:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"676d","id":30,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"453:4:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270","typeString":"literal_string \"gm\""},"value":"gm"},"src":"442:15:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":32,"nodeType":"ExpressionStatement","src":"442:15:3"}]},"functionSelector":"c0129d43","id":34,"implemented":true,"kind":"function","modifiers":[{"id":16,"kind":"modifierInvocation","modifierName":{"id":15,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":386,"src":"347:9:3"},"nodeType":"ModifierInvocation","src":"347:9:3"}],"name":"gm","nameLocation":"342:2:3","nodeType":"FunctionDefinition","parameters":{"id":14,"nodeType":"ParameterList","parameters":[],"src":"344:2:3"},"returnParameters":{"id":17,"nodeType":"ParameterList","parameters":[],"src":"364:0:3"},"scope":60,"src":"333:131:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":58,"nodeType":"Block","src":"517:130:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":43,"name":"_greeting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"562:9:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":41,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"545:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"545:16:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":44,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"545:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":40,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"535:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":45,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"535:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"676d","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"587:4:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270","typeString":"literal_string \"gm\""},"value":"gm"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270","typeString":"literal_string \"gm\""}],"id":46,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"577:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":48,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"577:15:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"535:57:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":50,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"594:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9_$","typeString":"type(library Errors)"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"CannotGm","nodeType":"MemberAccess","referencedDeclaration":8,"src":"594:15:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":39,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"527:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"527:83:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53,"nodeType":"ExpressionStatement","src":"527:83:3"},{"expression":{"id":56,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54,"name":"greeting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"620:8:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55,"name":"_greeting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"631:9:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"620:20:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":57,"nodeType":"ExpressionStatement","src":"620:20:3"}]},"functionSelector":"ead710c4","id":59,"implemented":true,"kind":"function","modifiers":[],"name":"greet","nameLocation":"479:5:3","nodeType":"FunctionDefinition","parameters":{"id":37,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36,"mutability":"mutable","name":"_greeting","nameLocation":"499:9:3","nodeType":"VariableDeclaration","scope":59,"src":"485:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":35,"name":"string","nodeType":"ElementaryTypeName","src":"485:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"484:25:3"},"returnParameters":{"id":38,"nodeType":"ParameterList","parameters":[],"src":"517:0:3"},"scope":60,"src":"470:177:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":61,"src":"270:379:3","usedErrors":[]}],"src":"38:612:3"},"id":3},"src/test/Greeter.t.sol":{"ast":{"absolutePath":"src/test/Greeter.t.sol","exportedSymbols":{"Context":[2146],"DSTest":[2124],"Errors":[9],"Gm":[207],"Greet":[129],"Greeter":[60],"GreeterTest":[309],"Hevm":[339],"Ownable":[443],"User":[249]},"id":208,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":62,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:4"},{"absolutePath":"src/test/utils/GreeterTest.sol","file":"./utils/GreeterTest.sol","id":63,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":208,"sourceUnit":310,"src":"63:33:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"src/Greeter.sol","file":"../Greeter.sol","id":65,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":208,"sourceUnit":61,"src":"97:40:4","symbolAliases":[{"foreign":{"id":64,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"src":"106:6:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":66,"name":"GreeterTest","nodeType":"IdentifierPath","referencedDeclaration":309,"src":"157:11:4"},"id":67,"nodeType":"InheritanceSpecifier","src":"157:11:4"}],"contractDependencies":[60,249],"contractKind":"contract","fullyImplemented":true,"id":129,"linearizedBaseContracts":[129,309,2124],"name":"Greet","nameLocation":"148:5:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":91,"nodeType":"Block","src":"206:140:4","statements":[{"clauses":[{"block":{"id":77,"nodeType":"Block","src":"238:11:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":74,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"240:4:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"240:6:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76,"nodeType":"ExpressionStatement","src":"240:6:4"}]},"errorName":"","id":78,"nodeType":"TryCatchClause","src":"238:11:4"},{"block":{"id":88,"nodeType":"Block","src":"283:57:4","statements":[{"expression":{"arguments":[{"id":83,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"306:5:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":84,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"313:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9_$","typeString":"type(library Errors)"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"CannotGm","nodeType":"MemberAccess","referencedDeclaration":8,"src":"313:15:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":1977,"src":"297:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"297:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87,"nodeType":"ExpressionStatement","src":"297:32:4"}]},"errorName":"Error","id":89,"nodeType":"TryCatchClause","parameters":{"id":81,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80,"mutability":"mutable","name":"error","nameLocation":"276:5:4","nodeType":"VariableDeclaration","scope":89,"src":"262:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79,"name":"string","nodeType":"ElementaryTypeName","src":"262:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"261:21:4"},"src":"250:90:4"}],"externalCall":{"arguments":[{"hexValue":"676d","id":72,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"232:4:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270","typeString":"literal_string \"gm\""},"value":"gm"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270","typeString":"literal_string \"gm\""}],"expression":{"id":70,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"220:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":71,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"greet","nodeType":"MemberAccess","referencedDeclaration":239,"src":"220:11:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) external"}},"id":73,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"220:17:4","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90,"nodeType":"TryStatement","src":"216:124:4"}]},"functionSelector":"5306d34d","id":92,"implemented":true,"kind":"function","modifiers":[],"name":"testCannotGm","nameLocation":"184:12:4","nodeType":"FunctionDefinition","parameters":{"id":68,"nodeType":"ParameterList","parameters":[],"src":"196:2:4"},"returnParameters":{"id":69,"nodeType":"ParameterList","parameters":[],"src":"206:0:4"},"scope":129,"src":"175:171:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":108,"nodeType":"Block","src":"389:78:4","statements":[{"expression":{"arguments":[{"hexValue":"6869","id":98,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"411:4:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7624778dedc75f8b322b9fa1632a610d40b85e106c7d9bf0e743a9ce291b9c6f","typeString":"literal_string \"hi\""},"value":"hi"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7624778dedc75f8b322b9fa1632a610d40b85e106c7d9bf0e743a9ce291b9c6f","typeString":"literal_string \"hi\""}],"expression":{"id":95,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"399:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":97,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"greet","nodeType":"MemberAccess","referencedDeclaration":239,"src":"399:11:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) external"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"399:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":100,"nodeType":"ExpressionStatement","src":"399:17:4"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":102,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"435:7:4","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"greeting","nodeType":"MemberAccess","referencedDeclaration":13,"src":"435:16:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"435:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"6869","id":105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"455:4:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7624778dedc75f8b322b9fa1632a610d40b85e106c7d9bf0e743a9ce291b9c6f","typeString":"literal_string \"hi\""},"value":"hi"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_7624778dedc75f8b322b9fa1632a610d40b85e106c7d9bf0e743a9ce291b9c6f","typeString":"literal_string \"hi\""}],"id":101,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":1977,"src":"426:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"426:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":107,"nodeType":"ExpressionStatement","src":"426:34:4"}]},"functionSelector":"e0747015","id":109,"implemented":true,"kind":"function","modifiers":[],"name":"testCanSetGreeting","nameLocation":"361:18:4","nodeType":"FunctionDefinition","parameters":{"id":93,"nodeType":"ParameterList","parameters":[],"src":"379:2:4"},"returnParameters":{"id":94,"nodeType":"ParameterList","parameters":[],"src":"389:0:4"},"scope":129,"src":"352:115:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":127,"nodeType":"Block","src":"538:86:4","statements":[{"expression":{"arguments":[{"id":117,"name":"greeting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"560:8:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":114,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"548:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"greet","nodeType":"MemberAccess","referencedDeclaration":239,"src":"548:11:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) external"}},"id":118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"548:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119,"nodeType":"ExpressionStatement","src":"548:21:4"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":121,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"588:7:4","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"greeting","nodeType":"MemberAccess","referencedDeclaration":13,"src":"588:16:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"588:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":124,"name":"greeting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"608:8:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":120,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":1977,"src":"579:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"579:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":126,"nodeType":"ExpressionStatement","src":"579:38:4"}]},"functionSelector":"6721f718","id":128,"implemented":true,"kind":"function","modifiers":[],"name":"testWorksForAllGreetings","nameLocation":"482:24:4","nodeType":"FunctionDefinition","parameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":111,"mutability":"mutable","name":"greeting","nameLocation":"521:8:4","nodeType":"VariableDeclaration","scope":128,"src":"507:22:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":110,"name":"string","nodeType":"ElementaryTypeName","src":"507:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"506:24:4"},"returnParameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"538:0:4"},"scope":129,"src":"473:151:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":208,"src":"139:488:4","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":130,"name":"GreeterTest","nodeType":"IdentifierPath","referencedDeclaration":309,"src":"644:11:4"},"id":131,"nodeType":"InheritanceSpecifier","src":"644:11:4"}],"contractDependencies":[60,249],"contractKind":"contract","fullyImplemented":true,"id":207,"linearizedBaseContracts":[207,309,2124],"name":"Gm","nameLocation":"638:2:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":152,"nodeType":"Block","src":"707:94:4","statements":[{"expression":{"arguments":[{"hexValue":"3130","id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"727:2:4","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"expression":{"id":134,"name":"hevm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"717:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Hevm_$339","typeString":"contract Hevm"}},"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"roll","nodeType":"MemberAccess","referencedDeclaration":321,"src":"717:9:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"717:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":139,"nodeType":"ExpressionStatement","src":"717:13:4"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":140,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"740:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gm","nodeType":"MemberAccess","referencedDeclaration":248,"src":"740:8:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"740:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"ExpressionStatement","src":"740:10:4"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":146,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"769:7:4","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"greeting","nodeType":"MemberAccess","referencedDeclaration":13,"src":"769:16:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"769:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"676d","id":149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"789:4:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270","typeString":"literal_string \"gm\""},"value":"gm"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_71b78290913af2addd8fcbe5766de306af2c8afbc466ca891e207f73638c7270","typeString":"literal_string \"gm\""}],"id":145,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":1977,"src":"760:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"760:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"760:34:4"}]},"functionSelector":"2a11c35d","id":153,"implemented":true,"kind":"function","modifiers":[],"name":"testOwnerCanGmOnGoodBlocks","nameLocation":"671:26:4","nodeType":"FunctionDefinition","parameters":{"id":132,"nodeType":"ParameterList","parameters":[],"src":"697:2:4"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[],"src":"707:0:4"},"scope":207,"src":"662:139:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":182,"nodeType":"Block","src":"854:166:4","statements":[{"expression":{"arguments":[{"hexValue":"3131","id":159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"874:2:4","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"}],"expression":{"id":156,"name":"hevm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"864:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Hevm_$339","typeString":"contract Hevm"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"roll","nodeType":"MemberAccess","referencedDeclaration":321,"src":"864:9:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"864:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161,"nodeType":"ExpressionStatement","src":"864:13:4"},{"clauses":[{"block":{"id":168,"nodeType":"Block","src":"902:11:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":165,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"904:4:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"904:6:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":167,"nodeType":"ExpressionStatement","src":"904:6:4"}]},"errorName":"","id":169,"nodeType":"TryCatchClause","src":"902:11:4"},{"block":{"id":179,"nodeType":"Block","src":"947:67:4","statements":[{"expression":{"arguments":[{"id":174,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"970:5:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":175,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"977:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9_$","typeString":"type(library Errors)"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"InvalidBlockNumber","nodeType":"MemberAccess","referencedDeclaration":5,"src":"977:25:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":173,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":1977,"src":"961:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"961:42:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":178,"nodeType":"ExpressionStatement","src":"961:42:4"}]},"errorName":"Error","id":180,"nodeType":"TryCatchClause","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"error","nameLocation":"940:5:4","nodeType":"VariableDeclaration","scope":180,"src":"926:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":170,"name":"string","nodeType":"ElementaryTypeName","src":"926:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"925:21:4"},"src":"914:100:4"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":162,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"891:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gm","nodeType":"MemberAccess","referencedDeclaration":248,"src":"891:8:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"891:10:4","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":181,"nodeType":"TryStatement","src":"887:127:4"}]},"functionSelector":"a474cdb0","id":183,"implemented":true,"kind":"function","modifiers":[],"name":"testOwnerCannotGmOnBadBlocks","nameLocation":"816:28:4","nodeType":"FunctionDefinition","parameters":{"id":154,"nodeType":"ParameterList","parameters":[],"src":"844:2:4"},"returnParameters":{"id":155,"nodeType":"ParameterList","parameters":[],"src":"854:0:4"},"scope":207,"src":"807:213:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":205,"nodeType":"Block","src":"1065:150:4","statements":[{"clauses":[{"block":{"id":192,"nodeType":"Block","src":"1088:11:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":189,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":569,"src":"1090:4:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1090:6:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":191,"nodeType":"ExpressionStatement","src":"1090:6:4"}]},"errorName":"","id":193,"nodeType":"TryCatchClause","src":"1088:11:4"},{"block":{"id":202,"nodeType":"Block","src":"1133:76:4","statements":[{"expression":{"arguments":[{"id":198,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"1156:5:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1163:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":197,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[658,683,713,738,797,822,852,877,1977,2012],"referencedDeclaration":1977,"src":"1147:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1147:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":201,"nodeType":"ExpressionStatement","src":"1147:51:4"}]},"errorName":"Error","id":203,"nodeType":"TryCatchClause","parameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":195,"mutability":"mutable","name":"error","nameLocation":"1126:5:4","nodeType":"VariableDeclaration","scope":203,"src":"1112:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":194,"name":"string","nodeType":"ElementaryTypeName","src":"1112:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1111:21:4"},"src":"1100:109:4"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":186,"name":"bob","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"1079:3:4","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gm","nodeType":"MemberAccess","referencedDeclaration":248,"src":"1079:6:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1079:8:4","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":204,"nodeType":"TryStatement","src":"1075:134:4"}]},"functionSelector":"8dc5d380","id":206,"implemented":true,"kind":"function","modifiers":[],"name":"testNonOwnerCannotGm","nameLocation":"1035:20:4","nodeType":"FunctionDefinition","parameters":{"id":184,"nodeType":"ParameterList","parameters":[],"src":"1055:2:4"},"returnParameters":{"id":185,"nodeType":"ParameterList","parameters":[],"src":"1065:0:4"},"scope":207,"src":"1026:189:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":208,"src":"629:588:4","usedErrors":[]}],"src":"38:1181:4"},"id":4},"src/test/utils/GreeterTest.sol":{"ast":{"absolutePath":"src/test/utils/GreeterTest.sol","exportedSymbols":{"Context":[2146],"DSTest":[2124],"Errors":[9],"Greeter":[60],"GreeterTest":[309],"Hevm":[339],"Ownable":[443],"User":[249]},"id":310,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":209,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:5"},{"absolutePath":"lib/ds-test/src/test.sol","file":"ds-test/test.sol","id":210,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":310,"sourceUnit":2125,"src":"62:26:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"src/Greeter.sol","file":"../../Greeter.sol","id":211,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":310,"sourceUnit":61,"src":"90:27:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"src/test/utils/Hevm.sol","file":"./Hevm.sol","id":212,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":310,"sourceUnit":340,"src":"118:20:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":249,"linearizedBaseContracts":[249],"name":"User","nameLocation":"149:4:5","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":215,"mutability":"mutable","name":"greeter","nameLocation":"177:7:5","nodeType":"VariableDeclaration","scope":249,"src":"160:24:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"},"typeName":{"id":214,"nodeType":"UserDefinedTypeName","pathNode":{"id":213,"name":"Greeter","nodeType":"IdentifierPath","referencedDeclaration":60,"src":"160:7:5"},"referencedDeclaration":60,"src":"160:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"visibility":"internal"},{"body":{"id":226,"nodeType":"Block","src":"221:44:5","statements":[{"expression":{"id":224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":220,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"231:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":222,"name":"_greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"249:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":221,"name":"Greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"241:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Greeter_$60_$","typeString":"type(contract Greeter)"}},"id":223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"241:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"src":"231:27:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":225,"nodeType":"ExpressionStatement","src":"231:27:5"}]},"id":227,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"_greeter","nameLocation":"211:8:5","nodeType":"VariableDeclaration","scope":227,"src":"203:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":216,"name":"address","nodeType":"ElementaryTypeName","src":"203:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"202:18:5"},"returnParameters":{"id":219,"nodeType":"ParameterList","parameters":[],"src":"221:0:5"},"scope":249,"src":"191:74:5","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":238,"nodeType":"Block","src":"317:40:5","statements":[{"expression":{"arguments":[{"id":235,"name":"greeting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"341:8:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":232,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"327:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"greet","nodeType":"MemberAccess","referencedDeclaration":59,"src":"327:13:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) external"}},"id":236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"327:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":237,"nodeType":"ExpressionStatement","src":"327:23:5"}]},"functionSelector":"ead710c4","id":239,"implemented":true,"kind":"function","modifiers":[],"name":"greet","nameLocation":"280:5:5","nodeType":"FunctionDefinition","parameters":{"id":230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":229,"mutability":"mutable","name":"greeting","nameLocation":"300:8:5","nodeType":"VariableDeclaration","scope":239,"src":"286:22:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":228,"name":"string","nodeType":"ElementaryTypeName","src":"286:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"285:24:5"},"returnParameters":{"id":231,"nodeType":"ParameterList","parameters":[],"src":"317:0:5"},"scope":249,"src":"271:86:5","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":247,"nodeType":"Block","src":"384:29:5","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":242,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"394:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gm","nodeType":"MemberAccess","referencedDeclaration":34,"src":"394:10:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"394:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":246,"nodeType":"ExpressionStatement","src":"394:12:5"}]},"functionSelector":"c0129d43","id":248,"implemented":true,"kind":"function","modifiers":[],"name":"gm","nameLocation":"372:2:5","nodeType":"FunctionDefinition","parameters":{"id":240,"nodeType":"ParameterList","parameters":[],"src":"374:2:5"},"returnParameters":{"id":241,"nodeType":"ParameterList","parameters":[],"src":"384:0:5"},"scope":249,"src":"363:50:5","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":310,"src":"140:275:5","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":250,"name":"DSTest","nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"441:6:5"},"id":251,"nodeType":"InheritanceSpecifier","src":"441:6:5"}],"contractDependencies":[60,249],"contractKind":"contract","fullyImplemented":true,"id":309,"linearizedBaseContracts":[309,2124],"name":"GreeterTest","nameLocation":"426:11:5","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":257,"mutability":"constant","name":"hevm","nameLocation":"477:4:5","nodeType":"VariableDeclaration","scope":309,"src":"454:48:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Hevm_$339","typeString":"contract Hevm"},"typeName":{"id":253,"nodeType":"UserDefinedTypeName","pathNode":{"id":252,"name":"Hevm","nodeType":"IdentifierPath","referencedDeclaration":339,"src":"454:4:5"},"referencedDeclaration":339,"src":"454:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_Hevm_$339","typeString":"contract Hevm"}},"value":{"arguments":[{"id":255,"name":"HEVM_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"489:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":254,"name":"Hevm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"484:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hevm_$339_$","typeString":"type(contract Hevm)"}},"id":256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"484:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Hevm_$339","typeString":"contract Hevm"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"greeter","nameLocation":"543:7:5","nodeType":"VariableDeclaration","scope":309,"src":"526:24:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"},"typeName":{"id":259,"nodeType":"UserDefinedTypeName","pathNode":{"id":258,"name":"Greeter","nodeType":"IdentifierPath","referencedDeclaration":60,"src":"526:7:5"},"referencedDeclaration":60,"src":"526:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"alice","nameLocation":"584:5:5","nodeType":"VariableDeclaration","scope":309,"src":"570:19:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"},"typeName":{"id":262,"nodeType":"UserDefinedTypeName","pathNode":{"id":261,"name":"User","nodeType":"IdentifierPath","referencedDeclaration":249,"src":"570:4:5"},"referencedDeclaration":249,"src":"570:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"visibility":"internal"},{"constant":false,"id":266,"mutability":"mutable","name":"bob","nameLocation":"609:3:5","nodeType":"VariableDeclaration","scope":309,"src":"595:17:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"},"typeName":{"id":265,"nodeType":"UserDefinedTypeName","pathNode":{"id":264,"name":"User","nodeType":"IdentifierPath","referencedDeclaration":249,"src":"595:4:5"},"referencedDeclaration":249,"src":"595:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"visibility":"internal"},{"body":{"id":307,"nodeType":"Block","src":"651:177:5","statements":[{"expression":{"id":274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":269,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"661:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"671:11:5","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_Greeter_$60_$","typeString":"function () returns (contract Greeter)"},"typeName":{"id":271,"nodeType":"UserDefinedTypeName","pathNode":{"id":270,"name":"Greeter","nodeType":"IdentifierPath","referencedDeclaration":60,"src":"675:7:5"},"referencedDeclaration":60,"src":"675:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}}},"id":273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"671:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"src":"661:23:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":275,"nodeType":"ExpressionStatement","src":"661:23:5"},{"expression":{"id":285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":276,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"694:5:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":282,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"719:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}],"id":281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"711:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":280,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:5","typeDescriptions":{}}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"711:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"702:8:5","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_User_$249_$","typeString":"function (address) returns (contract User)"},"typeName":{"id":278,"nodeType":"UserDefinedTypeName","pathNode":{"id":277,"name":"User","nodeType":"IdentifierPath","referencedDeclaration":249,"src":"706:4:5"},"referencedDeclaration":249,"src":"706:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"702:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"src":"694:34:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":286,"nodeType":"ExpressionStatement","src":"694:34:5"},{"expression":{"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":287,"name":"bob","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"738:3:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":293,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"761:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}],"id":292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"753:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":291,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:5","typeDescriptions":{}}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"753:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"744:8:5","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_User_$249_$","typeString":"function (address) returns (contract User)"},"typeName":{"id":289,"nodeType":"UserDefinedTypeName","pathNode":{"id":288,"name":"User","nodeType":"IdentifierPath","referencedDeclaration":249,"src":"748:4:5"},"referencedDeclaration":249,"src":"748:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"744:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"src":"738:32:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}},"id":297,"nodeType":"ExpressionStatement","src":"738:32:5"},{"expression":{"arguments":[{"arguments":[{"id":303,"name":"alice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"814:5:5","typeDescriptions":{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_User_$249","typeString":"contract User"}],"id":302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"806:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":301,"name":"address","nodeType":"ElementaryTypeName","src":"806:7:5","typeDescriptions":{}}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"806:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":298,"name":"greeter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":260,"src":"780:7:5","typeDescriptions":{"typeIdentifier":"t_contract$_Greeter_$60","typeString":"contract Greeter"}},"id":300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferOwnership","nodeType":"MemberAccess","referencedDeclaration":423,"src":"780:25:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"780:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"ExpressionStatement","src":"780:41:5"}]},"functionSelector":"0a9254e4","id":308,"implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"628:5:5","nodeType":"FunctionDefinition","parameters":{"id":267,"nodeType":"ParameterList","parameters":[],"src":"633:2:5"},"returnParameters":{"id":268,"nodeType":"ParameterList","parameters":[],"src":"651:0:5"},"scope":309,"src":"619:209:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":310,"src":"417:413:5","usedErrors":[]}],"src":"38:793:5"},"id":5},"src/test/utils/Hevm.sol":{"ast":{"absolutePath":"src/test/utils/Hevm.sol","exportedSymbols":{"Hevm":[339]},"id":340,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":311,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:6"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":false,"id":339,"linearizedBaseContracts":[339],"name":"Hevm","nameLocation":"81:4:6","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e5d6bf02","id":316,"implemented":false,"kind":"function","modifiers":[],"name":"warp","nameLocation":"138:4:6","nodeType":"FunctionDefinition","parameters":{"id":314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"x","nameLocation":"148:1:6","nodeType":"VariableDeclaration","scope":316,"src":"143:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint","nodeType":"ElementaryTypeName","src":"143:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"142:8:6"},"returnParameters":{"id":315,"nodeType":"ParameterList","parameters":[],"src":"165:0:6"},"scope":339,"src":"129:37:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"functionSelector":"1f7b4f30","id":321,"implemented":false,"kind":"function","modifiers":[],"name":"roll","nameLocation":"214:4:6","nodeType":"FunctionDefinition","parameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"x","nameLocation":"224:1:6","nodeType":"VariableDeclaration","scope":321,"src":"219:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":317,"name":"uint","nodeType":"ElementaryTypeName","src":"219:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"218:8:6"},"returnParameters":{"id":320,"nodeType":"ParameterList","parameters":[],"src":"241:0:6"},"scope":339,"src":"205:37:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"functionSelector":"70ca10bb","id":330,"implemented":false,"kind":"function","modifiers":[],"name":"store","nameLocation":"302:5:6","nodeType":"FunctionDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":323,"mutability":"mutable","name":"c","nameLocation":"316:1:6","nodeType":"VariableDeclaration","scope":330,"src":"308:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":322,"name":"address","nodeType":"ElementaryTypeName","src":"308:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":325,"mutability":"mutable","name":"loc","nameLocation":"327:3:6","nodeType":"VariableDeclaration","scope":330,"src":"319:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"319:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":327,"mutability":"mutable","name":"val","nameLocation":"340:3:6","nodeType":"VariableDeclaration","scope":330,"src":"332:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":326,"name":"bytes32","nodeType":"ElementaryTypeName","src":"332:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"307:37:6"},"returnParameters":{"id":329,"nodeType":"ParameterList","parameters":[],"src":"359:0:6"},"scope":339,"src":"293:67:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"functionSelector":"89160467","id":338,"implemented":false,"kind":"function","modifiers":[],"name":"ffi","nameLocation":"374:3:6","nodeType":"FunctionDefinition","parameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":338,"src":"378:17:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_string_calldata_ptr_$dyn_calldata_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":331,"name":"string","nodeType":"ElementaryTypeName","src":"378:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":332,"nodeType":"ArrayTypeName","src":"378:8:6","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"377:19:6"},"returnParameters":{"id":337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":338,"src":"423:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":335,"name":"bytes","nodeType":"ElementaryTypeName","src":"423:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"422:14:6"},"scope":339,"src":"365:72:6","stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"scope":340,"src":"63:376:6","usedErrors":[]}],"src":"38:402:6"},"id":6}}} diff --git a/testdata/README.md b/testdata/README.md new file mode 100644 index 000000000000..d2be86ecfc57 --- /dev/null +++ b/testdata/README.md @@ -0,0 +1,11 @@ +## Foundry Tests + +A test suite that tests different aspects of Foundry. + +### Structure + +- [`core`](core): Tests for fundamental aspects of Foundry +- [`logs`](logs): Tests for Foundry logging capabilities +- [`cheats`](cheats): Tests for Foundry cheatcodes +- [`fuzz`](fuzz): Tests for the Foundry fuzzer +- [`fuzz`](fuzz): Tests for Foundry tracer diff --git a/testdata/cheats/Addr.t.sol b/testdata/cheats/Addr.t.sol new file mode 100644 index 000000000000..d9b7384b4564 --- /dev/null +++ b/testdata/cheats/Addr.t.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract AddrTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testFailPrivKeyZero() public { + cheats.addr(0); + } + + function testAddr() public { + uint pk = 77814517325470205911140941194401928579557062014761831930645393041380819009408; + address expected = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266; + + assertEq(cheats.addr(pk), expected, "expected address did not match"); + } +} diff --git a/testdata/cheats/Assume.t.sol b/testdata/cheats/Assume.t.sol new file mode 100644 index 000000000000..5375c11a0cfd --- /dev/null +++ b/testdata/cheats/Assume.t.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract AssumeTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testAssume(uint8 x) public { + cheats.assume(x < 2 ** 7); + assertTrue(x < 2 ** 7, "did not discard inputs"); + } +} diff --git a/testdata/cheats/Cheats.sol b/testdata/cheats/Cheats.sol new file mode 100644 index 000000000000..58370292d875 --- /dev/null +++ b/testdata/cheats/Cheats.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +interface Cheats { + // Set block.timestamp (newTimestamp) + function warp(uint256) external; + // Set block.height (newHeight) + function roll(uint256) external; + // Set block.basefee (newBasefee) + function fee(uint256) external; + // Loads a storage slot from an address (who, slot) + function load(address,bytes32) external returns (bytes32); + // Stores a value to an address' storage slot, (who, slot, value) + function store(address,bytes32,bytes32) external; + // Signs data, (privateKey, digest) => (v, r, s) + function sign(uint256,bytes32) external returns (uint8,bytes32,bytes32); + // Gets address for a given private key, (privateKey) => (address) + function addr(uint256) external returns (address); + // Performs a foreign function call via terminal, (stringInputs) => (result) + function ffi(string[] calldata) external returns (bytes memory); + // Sets the *next* call's msg.sender to be the input address + function prank(address) external; + // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called + function startPrank(address) external; + // Sets the *next* call's msg.sender to be the input address, and the tx.origin to be the second input + function prank(address,address) external; + // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called, and the tx.origin to be the second input + function startPrank(address,address) external; + // Resets subsequent calls' msg.sender to be `address(this)` + function stopPrank() external; + // Sets an address' balance, (who, newBalance) + function deal(address, uint256) external; + // Sets an address' code, (who, newCode) + function etch(address, bytes calldata) external; + // Expects an error on next call + function expectRevert() external; + function expectRevert(bytes calldata) external; + function expectRevert(bytes4) external; + // Record all storage reads and writes + function record() external; + // Gets all accessed reads and write slot from a recording session, for a given address + function accesses(address) external returns (bytes32[] memory reads, bytes32[] memory writes); + // Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData). + // Call this function, then emit an event, then call a function. Internally after the call, we check if + // logs were emitted in the expected order with the expected topics and data (as specified by the booleans) + function expectEmit(bool,bool,bool,bool) external; + // Mocks a call to an address, returning specified data. + // Calldata can either be strict or a partial match, e.g. if you only + // pass a Solidity selector to the expected calldata, then the entire Solidity + // function will be mocked. + function mockCall(address,bytes calldata,bytes calldata) external; + // Clears all mocked calls + function clearMockedCalls() external; + // Expect a call to an address with the specified calldata. + // Calldata can either be strict or a partial match + function expectCall(address,bytes calldata) external; + // Gets the code from an artifact file. Takes in the relative path to the json file + function getCode(string calldata) external returns (bytes memory); + // Labels an address in call traces + function label(address, string calldata) external; + // If the condition is false, discard this run's fuzz inputs and generate new ones + function assume(bool) external; +} diff --git a/testdata/cheats/Deal.t.sol b/testdata/cheats/Deal.t.sol new file mode 100644 index 000000000000..5c7288514c7e --- /dev/null +++ b/testdata/cheats/Deal.t.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract DealTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testDeal(uint256 amount) public { + address target = address(1); + assertEq(target.balance, 0, "initial balance incorrect"); + + // Give half the amount + cheats.deal(target, amount / 2); + assertEq(target.balance, amount / 2, "half balance is incorrect"); + + // Give the entire amount to check that deal is not additive + cheats.deal(target, amount); + assertEq(target.balance, amount, "deal did not overwrite balance"); + } +} diff --git a/testdata/cheats/Etch.t.sol b/testdata/cheats/Etch.t.sol new file mode 100644 index 000000000000..eae197e289e6 --- /dev/null +++ b/testdata/cheats/Etch.t.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract EtchTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testEtch() public { + address target = address(10); + bytes memory code = hex"1010"; + cheats.etch(target, code); + assertEq(string(code), string(target.code)); + } +} diff --git a/testdata/cheats/ExpectCall.t.sol b/testdata/cheats/ExpectCall.t.sol new file mode 100644 index 000000000000..4e9023abe945 --- /dev/null +++ b/testdata/cheats/ExpectCall.t.sol @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract Contract { + function numberA() public pure returns (uint256) { + return 1; + } + + function numberB() public pure returns (uint256) { + return 2; + } + + function add(uint256 a, uint256 b) public pure returns (uint256) { + return a + b; + } +} + +contract NestedContract { + Contract private inner; + + constructor(Contract _inner) { + inner = _inner; + } + + function sum() public view returns (uint256) { + return inner.numberA() + inner.numberB(); + } + + function hello() public pure returns (string memory) { + return "hi"; + } +} + +contract ExpectCallTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testExpectCallWithData() public { + Contract target = new Contract(); + cheats.expectCall( + address(target), + abi.encodeWithSelector(target.add.selector, 1, 2) + ); + target.add(1, 2); + } + + function testFailExpectCallWithData() public { + Contract target = new Contract(); + cheats.expectCall( + address(target), + abi.encodeWithSelector(target.add.selector, 1, 2) + ); + target.add(3, 3); + } + + function testExpectInnerCall() public { + Contract inner = new Contract(); + NestedContract target = new NestedContract(inner); + + cheats.expectCall( + address(inner), + abi.encodeWithSelector(inner.numberB.selector) + ); + target.sum(); + } + + function testFailExpectInnerCall() public { + Contract inner = new Contract(); + NestedContract target = new NestedContract(inner); + + cheats.expectCall( + address(inner), + abi.encodeWithSelector(inner.numberB.selector) + ); + + // this function does not call inner + target.hello(); + } + + function testExpectSelectorCall() public { + Contract target = new Contract(); + cheats.expectCall( + address(target), + abi.encodeWithSelector(target.add.selector) + ); + target.add(5, 5); + } + + function testFailExpectSelectorCall() public { + Contract target = new Contract(); + cheats.expectCall( + address(target), + abi.encodeWithSelector(target.add.selector) + ); + } + + function testFailExpectCallWithMoreParameters() public { + Contract target = new Contract(); + cheats.expectCall( + address(target), + abi.encodeWithSelector(target.add.selector, 3, 3, 3) + ); + target.add(3, 3); + } +} diff --git a/testdata/cheats/ExpectEmit.t.sol b/testdata/cheats/ExpectEmit.t.sol new file mode 100644 index 000000000000..7a2d78cc0f6f --- /dev/null +++ b/testdata/cheats/ExpectEmit.t.sol @@ -0,0 +1,181 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract Emitter { + event Something( + uint256 indexed topic1, + uint256 indexed topic2, + uint256 indexed topic3, + uint256 data + ); + + function emitEvent( + uint256 topic1, + uint256 topic2, + uint256 topic3, + uint256 data + ) public { + emit Something(topic1, topic2, topic3, data); + } + + function emitMultiple( + uint256[2] memory topic1, + uint256[2] memory topic2, + uint256[2] memory topic3, + uint256[2] memory data + ) public { + emit Something(topic1[0], topic2[0], topic3[0], data[0]); + emit Something(topic1[1], topic2[1], topic3[1], data[1]); + } + + function emitNested( + Emitter inner, + uint256 topic1, + uint256 topic2, + uint256 topic3, + uint256 data + ) public { + inner.emitEvent(topic1, topic2, topic3, data); + } +} + +contract ExpectEmitTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + Emitter emitter; + + event Something( + uint256 indexed topic1, + uint256 indexed topic2, + uint256 indexed topic3, + uint256 data + ); + + function setUp() public { + emitter = new Emitter(); + } + + function testFailExpectEmitDanglingNoReference() public { + cheats.expectEmit(false, false, false, false); + } + + function testFailExpectEmitDanglingWithReference() public { + cheats.expectEmit(false, false, false, false); + emit Something(1, 2, 3, 4); + } + + /// The topics that are not checked are altered to be incorrect + /// compared to the reference. + function testExpectEmit( + bool checkTopic1, + bool checkTopic2, + bool checkTopic3, + bool checkData, + uint128 topic1, + uint128 topic2, + uint128 topic3, + uint128 data + ) public { + uint256 transformedTopic1 = checkTopic1 ? uint256(topic1) : uint256(topic1) + 1; + uint256 transformedTopic2 = checkTopic2 ? uint256(topic2) : uint256(topic2) + 1; + uint256 transformedTopic3 = checkTopic3 ? uint256(topic3) : uint256(topic3) + 1; + uint256 transformedData = checkData ? uint256(data) : uint256(data) + 1; + + cheats.expectEmit(checkTopic1, checkTopic2, checkTopic3, checkData); + + emit Something(topic1, topic2, topic3, data); + emitter.emitEvent(transformedTopic1, transformedTopic2, transformedTopic3, transformedData); + } + + /// The topics that are checked are altered to be incorrect + /// compared to the reference. + function testFailExpectEmit( + bool checkTopic1, + bool checkTopic2, + bool checkTopic3, + bool checkData, + uint128 topic1, + uint128 topic2, + uint128 topic3, + uint128 data + ) public { + cheats.assume(checkTopic1 || checkTopic2 || checkTopic3 || checkData); + + uint256 transformedTopic1 = checkTopic1 ? uint256(topic1) + 1 : uint256(topic1); + uint256 transformedTopic2 = checkTopic2 ? uint256(topic2) + 1 : uint256(topic2); + uint256 transformedTopic3 = checkTopic3 ? uint256(topic3) + 1 : uint256(topic3); + uint256 transformedData = checkData ? uint256(data) + 1 : uint256(data); + + cheats.expectEmit(checkTopic1, checkTopic2, checkTopic3, checkData); + + emit Something(topic1, topic2, topic3, data); + emitter.emitEvent(transformedTopic1, transformedTopic2, transformedTopic3, transformedData); + } + + /// The topics that are checked are altered to be incorrect + /// compared to the reference. + function testExpectEmitNested( + bool checkTopic1, + bool checkTopic2, + bool checkTopic3, + bool checkData, + uint128 topic1, + uint128 topic2, + uint128 topic3, + uint128 data + ) public { + Emitter inner = new Emitter(); + + uint256 transformedTopic1 = checkTopic1 ? uint256(topic1) : uint256(topic1) + 1; + uint256 transformedTopic2 = checkTopic2 ? uint256(topic2) : uint256(topic2) + 1; + uint256 transformedTopic3 = checkTopic3 ? uint256(topic3) : uint256(topic3) + 1; + uint256 transformedData = checkData ? uint256(data) : uint256(data) + 1; + + cheats.expectEmit(checkTopic1, checkTopic2, checkTopic3, checkData); + + emit Something(topic1, topic2, topic3, data); + emitter.emitNested(inner, transformedTopic1, transformedTopic2, transformedTopic3, transformedData); + } + + /// The topics that are checked are altered to be incorrect + /// compared to the reference. + function testFailExpectEmitNested( + bool checkTopic1, + bool checkTopic2, + bool checkTopic3, + bool checkData, + uint128 topic1, + uint128 topic2, + uint128 topic3, + uint128 data + ) public { + cheats.assume(checkTopic1 || checkTopic2 || checkTopic3 || checkData); + Emitter inner = new Emitter(); + + uint256 transformedTopic1 = checkTopic1 ? uint256(topic1) + 1 : uint256(topic1); + uint256 transformedTopic2 = checkTopic2 ? uint256(topic2) + 1 : uint256(topic2); + uint256 transformedTopic3 = checkTopic3 ? uint256(topic3) + 1 : uint256(topic3); + uint256 transformedData = checkData ? uint256(data) + 1 : uint256(data); + + cheats.expectEmit(checkTopic1, checkTopic2, checkTopic3, checkData); + + emit Something(topic1, topic2, topic3, data); + emitter.emitNested(inner, transformedTopic1, transformedTopic2, transformedTopic3, transformedData); + } + + function testExpectEmitMultiple() public { + cheats.expectEmit(true, true, true, true); + emit Something(1, 2, 3, 4); + cheats.expectEmit(true, true, true, true); + emit Something(5, 6, 7, 8); + + emitter.emitMultiple( + [uint256(1), uint256(5)], + [uint256(2), uint256(6)], + [uint256(3), uint256(7)], + [uint256(4), uint256(8)] + ); + } +} diff --git a/testdata/cheats/ExpectRevert.t.sol b/testdata/cheats/ExpectRevert.t.sol new file mode 100644 index 000000000000..f73fe79b436b --- /dev/null +++ b/testdata/cheats/ExpectRevert.t.sol @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract Reverter { + error CustomError(); + + function revertWithMessage(string memory message) public pure { + require(false, message); + } + + function doNotRevert() public pure {} + + function panic() public pure returns (uint256) { + return uint256(100) - uint256(101); + } + + function revertWithCustomError() public pure { + revert CustomError(); + } + + function nestedRevert(Reverter inner, string memory message) public pure { + inner.revertWithMessage(message); + } + + function callThenRevert(Dummy dummy, string memory message) public pure { + dummy.callMe(); + require(false, message); + } + + function revertWithoutReason() public pure { + revert(); + } +} + +contract ConstructorReverter { + constructor(string memory message) { + require(false, message); + } +} + +contract Dummy { + function callMe() public pure returns (string memory) { + return "thanks for calling"; + } +} + +contract ExpectRevertTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testExpectRevertString() public { + Reverter reverter = new Reverter(); + cheats.expectRevert("revert"); + reverter.revertWithMessage("revert"); + } + + function testExpectRevertConstructor() public { + cheats.expectRevert("constructor revert"); + new ConstructorReverter("constructor revert"); + } + + function testExpectRevertBuiltin() public { + Reverter reverter = new Reverter(); + cheats.expectRevert(abi.encodeWithSignature("Panic(uint256)", 0x11)); + reverter.panic(); + } + + function testExpectRevertCustomError() public { + Reverter reverter = new Reverter(); + cheats.expectRevert(abi.encodePacked(Reverter.CustomError.selector)); + reverter.revertWithCustomError(); + } + + function testExpectRevertNested() public { + Reverter reverter = new Reverter(); + Reverter inner = new Reverter(); + cheats.expectRevert("nested revert"); + reverter.nestedRevert(inner, "nested revert"); + } + + function testExpectRevertCallsThenReverts() public { + Reverter reverter = new Reverter(); + Dummy dummy = new Dummy(); + cheats.expectRevert("called a function and then reverted"); + reverter.callThenRevert(dummy, "called a function and then reverted"); + } + + function testFailExpectRevertErrorDoesNotMatch() public { + Reverter reverter = new Reverter(); + cheats.expectRevert("should revert with this message"); + reverter.revertWithMessage("but reverts with this message"); + } + + function testFailExpectRevertDidNotRevert() public { + Reverter reverter = new Reverter(); + cheats.expectRevert("does not revert, but we think it should"); + reverter.doNotRevert(); + } + + function testExpectRevertNoReason() public { + Reverter reverter = new Reverter(); + cheats.expectRevert(bytes("")); + reverter.revertWithoutReason(); + cheats.expectRevert(); + reverter.revertWithoutReason(); + } + + function testFailExpectRevertDangling() public { + cheats.expectRevert("dangling"); + } +} diff --git a/testdata/cheats/Fee.t.sol b/testdata/cheats/Fee.t.sol new file mode 100644 index 000000000000..e0365603db45 --- /dev/null +++ b/testdata/cheats/Fee.t.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract FeeTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testFee() public { + cheats.fee(10); + assertEq(block.basefee, 10, "fee failed"); + } + + function testFeeFuzzed(uint256 fee) public { + cheats.fee(fee); + assertEq(block.basefee, fee, "fee failed"); + } +} diff --git a/testdata/cheats/Ffi.t.sol b/testdata/cheats/Ffi.t.sol new file mode 100644 index 000000000000..a87d10591960 --- /dev/null +++ b/testdata/cheats/Ffi.t.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract FfiTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testFfi() public { + string[] memory inputs = new string[](3); + inputs[0] = "echo"; + inputs[1] = "-n"; + inputs[2] = "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000966666920776f726b730000000000000000000000000000000000000000000000"; + + bytes memory res = cheats.ffi(inputs); + (string memory output) = abi.decode(res, (string)); + assertEq(output, "ffi works", "ffi failed"); + } +} diff --git a/testdata/cheats/GetCode.t.sol b/testdata/cheats/GetCode.t.sol new file mode 100644 index 000000000000..c7bf7ea33859 --- /dev/null +++ b/testdata/cheats/GetCode.t.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract GetCodeTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testGetCode() public { + bytes memory fullPath = cheats.getCode("../testdata/fixtures/GetCode/WorkingContract.json"); + //bytes memory fileOnly = cheats.getCode("WorkingContract.sol"); + //bytes memory fileAndContractName = cheats.getCode("WorkingContract.sol:WorkingContract"); + + string memory expected = string(bytes(hex"6080604052348015600f57600080fd5b50607c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063d1efd30d14602d575b600080fd5b6034602a81565b60405190815260200160405180910390f3fea26469706673582212206740fcc626175d58a151da7fbfca1775ea4d3ababf7f3168347dab89488f6a4264736f6c634300080a0033")); + assertEq( + string(fullPath), + expected, + "code for full path was incorrect" + ); + // TODO: Disabled until we figure out a way to get these variants of the + // cheatcode working during automated tests + //assertEq( + // string(fileOnly), + // expected, + // "code for file name only was incorrect" + //); + //assertEq( + // string(fileAndContractName), + // expected, + // "code for full path was incorrect" + //); + } + + function testFailGetUnlinked() public { + cheats.getCode("UnlinkedContract.sol"); + } +} diff --git a/testdata/cheats/Label.t.sol b/testdata/cheats/Label.t.sol new file mode 100644 index 000000000000..d0a8786c0521 --- /dev/null +++ b/testdata/cheats/Label.t.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract LabelTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testLabel() public { + cheats.label(address(1), "Sir Address the 1st"); + } +} diff --git a/testdata/cheats/Load.t.sol b/testdata/cheats/Load.t.sol new file mode 100644 index 000000000000..8fede8dd50f6 --- /dev/null +++ b/testdata/cheats/Load.t.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract Storage { + uint256 slot0 = 10; +} + +contract LoadTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + uint256 slot0 = 20; + Storage store; + + function setUp() public { + store = new Storage(); + } + + function testLoadOwnStorage() public { + uint slot; + assembly { + slot := slot0.slot + } + uint val = uint(cheats.load(address(this), bytes32(slot))); + assertEq(val, 20, "load failed"); + } + + function testLoadOtherStorage() public { + uint val = uint(cheats.load(address(store), bytes32(0))); + assertEq(val, 10, "load failed"); + } +} diff --git a/testdata/cheats/MockCall.t.sol b/testdata/cheats/MockCall.t.sol new file mode 100644 index 000000000000..11e659e058e4 --- /dev/null +++ b/testdata/cheats/MockCall.t.sol @@ -0,0 +1,116 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract Mock { + function numberA() public pure returns (uint256) { + return 1; + } + + function numberB() public pure returns (uint256) { + return 2; + } + + function add(uint256 a, uint256 b) public pure returns (uint256) { + return a + b; + } +} + +contract NestedMock { + Mock private inner; + + constructor(Mock _inner) { + inner = _inner; + } + + function sum() public view returns (uint256) { + return inner.numberA() + inner.numberB(); + } +} + +contract MockCallTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testMockGetters() public { + Mock target = new Mock(); + + // pre-mock + assertEq(target.numberA(), 1); + assertEq(target.numberB(), 2); + + cheats.mockCall( + address(target), + abi.encodeWithSelector(target.numberB.selector), + abi.encode(10) + ); + + // post-mock + assertEq(target.numberA(), 1); + assertEq(target.numberB(), 10); + } + + function testMockNested() public { + Mock inner = new Mock(); + NestedMock target = new NestedMock(inner); + + // pre-mock + assertEq(target.sum(), 3); + + cheats.mockCall( + address(inner), + abi.encodeWithSelector(inner.numberB.selector), + abi.encode(9) + ); + + // post-mock + assertEq(target.sum(), 10); + } + + function testMockSelector() public { + Mock target = new Mock(); + assertEq(target.add(5, 5), 10); + + cheats.mockCall( + address(target), + abi.encodeWithSelector(target.add.selector), + abi.encode(11) + ); + + assertEq(target.add(5, 5), 11); + } + + function testMockCalldata() public { + Mock target = new Mock(); + assertEq(target.add(5, 5), 10); + assertEq(target.add(6, 4), 10); + + cheats.mockCall( + address(target), + abi.encodeWithSelector(target.add.selector, 5, 5), + abi.encode(11) + ); + + assertEq(target.add(5, 5), 11); + assertEq(target.add(6, 4), 10); + } + + function testClearMockedCalls() public { + Mock target = new Mock(); + + cheats.mockCall( + address(target), + abi.encodeWithSelector(target.numberB.selector), + abi.encode(10) + ); + + assertEq(target.numberA(), 1); + assertEq(target.numberB(), 10); + + cheats.clearMockedCalls(); + + assertEq(target.numberA(), 1); + assertEq(target.numberB(), 2); + } +} diff --git a/testdata/cheats/Prank.t.sol b/testdata/cheats/Prank.t.sol new file mode 100644 index 000000000000..567ef8fff6c7 --- /dev/null +++ b/testdata/cheats/Prank.t.sol @@ -0,0 +1,307 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract Victim { + function assertCallerAndOrigin( + address expectedSender, + string memory senderMessage, + address expectedOrigin, + string memory originMessage + ) public view { + require(msg.sender == expectedSender, senderMessage); + require(tx.origin == expectedOrigin, originMessage); + } +} + +contract ConstructorVictim is Victim { + constructor( + address expectedSender, + string memory senderMessage, + address expectedOrigin, + string memory originMessage + ) { + require(msg.sender == expectedSender, senderMessage); + require(tx.origin == expectedOrigin, originMessage); + } +} + +contract NestedVictim { + Victim innerVictim; + + constructor(Victim victim) { + innerVictim = victim; + } + + function assertCallerAndOrigin( + address expectedSender, + string memory senderMessage, + address expectedOrigin, + string memory originMessage + ) public view { + require(msg.sender == expectedSender, senderMessage); + require(tx.origin == expectedOrigin, originMessage); + innerVictim.assertCallerAndOrigin( + address(this), + "msg.sender was incorrectly set for nested victim", + expectedOrigin, + "tx.origin was incorrectly set for nested victim" + ); + } +} + +contract NestedPranker { + Cheats constant cheats = Cheats( + address(bytes20(uint160(uint256(keccak256('hevm cheat code'))))) + ); + + address newSender; + address newOrigin; + address oldOrigin; + + constructor( + address _newSender, + address _newOrigin + ) { + newSender = _newSender; + newOrigin = _newOrigin; + oldOrigin = tx.origin; + } + + function incompletePrank() public { + cheats.startPrank(newSender, newOrigin); + } + + function completePrank(NestedVictim victim) public { + victim.assertCallerAndOrigin( + newSender, + "msg.sender was not set in nested prank", + newOrigin, + "tx.origin was not set in nested prank" + ); + cheats.stopPrank(); + + // Ensure we cleaned up correctly + victim.assertCallerAndOrigin( + address(this), + "msg.sender was not cleaned up in nested prank", + oldOrigin, + "tx.origin was not cleaned up in nested prank" + ); + } +} + +contract PrankTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testPrankSender(address sender) public { + // Perform the prank + Victim victim = new Victim(); + cheats.prank(sender); + victim.assertCallerAndOrigin( + sender, + "msg.sender was not set during prank", + tx.origin, + "tx.origin invariant failed" + ); + + // Ensure we cleaned up correctly + victim.assertCallerAndOrigin( + address(this), + "msg.sender was not cleaned up", + tx.origin, + "tx.origin invariant failed" + ); + } + + function testPrankOrigin(address sender, address origin) public { + address oldOrigin = tx.origin; + + // Perform the prank + Victim victim = new Victim(); + cheats.prank(sender, origin); + victim.assertCallerAndOrigin( + sender, + "msg.sender was not set during prank", + origin, + "tx.origin was not set during prank" + ); + + // Ensure we cleaned up correctly + victim.assertCallerAndOrigin( + address(this), + "msg.sender was not cleaned up", + oldOrigin, + "tx.origin was not cleaned up" + ); + } + + function testPrankConstructorSender(address sender) public { + cheats.prank(sender); + ConstructorVictim victim = new ConstructorVictim( + sender, + "msg.sender was not set during prank", + tx.origin, + "tx.origin invariant failed" + ); + + // Ensure we cleaned up correctly + victim.assertCallerAndOrigin( + address(this), + "msg.sender was not cleaned up", + tx.origin, + "tx.origin invariant failed" + ); + } + + function testPrankConstructorOrigin(address sender, address origin) public { + // Perform the prank + cheats.prank(sender, origin); + ConstructorVictim victim = new ConstructorVictim( + sender, + "msg.sender was not set during prank", + origin, + "tx.origin was not set during prank" + ); + + // Ensure we cleaned up correctly + victim.assertCallerAndOrigin( + address(this), + "msg.sender was not cleaned up", + tx.origin, + "tx.origin was not cleaned up" + ); + } + + function testPrankStartStop(address sender, address origin) public { + address oldOrigin = tx.origin; + + // Perform the prank + Victim victim = new Victim(); + cheats.startPrank(sender, origin); + victim.assertCallerAndOrigin( + sender, + "msg.sender was not set during prank", + origin, + "tx.origin was not set during prank" + ); + victim.assertCallerAndOrigin( + sender, + "msg.sender was not set during prank (call 2)", + origin, + "tx.origin was not set during prank (call 2)" + ); + cheats.stopPrank(); + + // Ensure we cleaned up correctly + victim.assertCallerAndOrigin( + address(this), + "msg.sender was not cleaned up", + oldOrigin, + "tx.origin was not cleaned up" + ); + } + + function testPrankStartStopConstructor(address sender, address origin) public { + // Perform the prank + cheats.startPrank(sender, origin); + ConstructorVictim victim = new ConstructorVictim( + sender, + "msg.sender was not set during prank", + origin, + "tx.origin was not set during prank" + ); + new ConstructorVictim( + sender, + "msg.sender was not set during prank (call 2)", + origin, + "tx.origin was not set during prank (call 2)" + ); + cheats.stopPrank(); + + // Ensure we cleaned up correctly + victim.assertCallerAndOrigin( + address(this), + "msg.sender was not cleaned up", + tx.origin, + "tx.origin was not cleaned up" + ); + } + + /// This test checks that depth is working correctly with respect + /// to the `startPrank` and `stopPrank` cheatcodes. + /// + /// The nested pranker calls `startPrank` but does not call + /// `stopPrank` at first. + /// + /// Then, we call our victim from the main test: this call + /// should NOT have altered `msg.sender` or `tx.origin`. + /// + /// Then, the nested pranker will complete their prank: this call + /// SHOULD have altered `msg.sender` and `tx.origin`. + /// + /// Each call to the victim calls yet another victim. The expected + /// behavior for this call is that `tx.origin` is altered when + /// the nested pranker calls, otherwise not. In both cases, + /// `msg.sender` should be the address of the first victim. + /// + /// Success case: + /// + /// ┌────┐ ┌───────┐ ┌──────┐ ┌──────┐ ┌────────────┐ + /// │Test│ │Pranker│ │Cheats│ │Victim│ │Inner Victim│ + /// └─┬──┘ └───┬───┘ └──┬───┘ └──┬───┘ └─────┬──────┘ + /// │ │ │ │ │ + /// │incompletePrank()│ │ │ │ + /// │────────────────>│ │ │ │ + /// │ │ │ │ │ + /// │ │startPrank()│ │ │ + /// │ │───────────>│ │ │ + /// │ │ │ │ │ + /// │ should not be pranked│ │ │ + /// │──────────────────────────────────────>│ │ + /// │ │ │ │ │ + /// │ │ │ │ should not be pranked │ + /// │ │ │ │────────────────────────>│ + /// │ │ │ │ │ + /// │ completePrank() │ │ │ │ + /// │────────────────>│ │ │ │ + /// │ │ │ │ │ + /// │ │ should be pranked │ │ + /// │ │────────────────────>│ │ + /// │ │ │ │ │ + /// │ │ │ │only tx.origin is pranked│ + /// │ │ │ │────────────────────────>│ + /// │ │ │ │ │ + /// │ │stopPrank() │ │ │ + /// │ │───────────>│ │ │ + /// │ │ │ │ │ + /// │ │should not be pranked│ │ + /// │ │────────────────────>│ │ + /// │ │ │ │ │ + /// │ │ │ │ should not be pranked │ + /// │ │ │ │────────────────────────>│ + /// ┌─┴──┐ ┌───┴───┐ ┌──┴───┐ ┌──┴───┐ ┌─────┴──────┐ + /// │Test│ │Pranker│ │Cheats│ │Victim│ │Inner Victim│ + /// └────┘ └───────┘ └──────┘ └──────┘ └────────────┘ + /// If this behavior is incorrectly implemented then the victim + /// will be pranked the first time it is called. + function testPrankComplex(address sender, address origin) public { + address oldOrigin = tx.origin; + + NestedPranker pranker = new NestedPranker(sender, origin); + Victim innerVictim = new Victim(); + NestedVictim victim = new NestedVictim(innerVictim); + + pranker.incompletePrank(); + victim.assertCallerAndOrigin( + address(this), + "msg.sender was altered at an incorrect depth", + oldOrigin, + "tx.origin was altered at an incorrect depth" + ); + + pranker.completePrank(victim); + } +} diff --git a/testdata/cheats/Record.t.sol b/testdata/cheats/Record.t.sol new file mode 100644 index 000000000000..ea201a20593a --- /dev/null +++ b/testdata/cheats/Record.t.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract RecordAccess { + function record() public returns (NestedRecordAccess) { + assembly { + sstore(1, add(sload(1), 1)) + } + + NestedRecordAccess inner = new NestedRecordAccess(); + inner.record(); + + return inner; + } +} + +contract NestedRecordAccess { + function record() public { + assembly { + sstore(2, add(sload(2), 1)) + } + } +} + +contract RecordTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testRecordAccess() public { + RecordAccess target = new RecordAccess(); + + // Start recording + cheats.record(); + NestedRecordAccess inner = target.record(); + + // Verify Records + (bytes32[] memory reads, bytes32[] memory writes) = cheats.accesses(address(target)); + (bytes32[] memory innerReads, bytes32[] memory innerWrites) = cheats.accesses(address(inner)); + + assertEq(reads.length, 2, "number of reads is incorrect"); + assertEq(reads[0], bytes32(uint256(1)), "key for read 0 is incorrect"); + assertEq(reads[1], bytes32(uint256(1)), "key for read 1 is incorrect"); + + assertEq(writes.length, 1, "number of writes is incorrect"); + assertEq(writes[0], bytes32(uint256(1)), "key for write is incorrect"); + + assertEq(innerReads.length, 2, "number of nested reads is incorrect"); + assertEq(innerReads[0], bytes32(uint256(2)), "key for nested read 0 is incorrect"); + assertEq(innerReads[1], bytes32(uint256(2)), "key for nested read 1 is incorrect"); + + assertEq(innerWrites.length, 1, "number of nested writes is incorrect"); + assertEq(innerWrites[0], bytes32(uint256(2)), "key for nested write is incorrect"); + } +} diff --git a/testdata/cheats/Roll.t.sol b/testdata/cheats/Roll.t.sol new file mode 100644 index 000000000000..1cb210ee550a --- /dev/null +++ b/testdata/cheats/Roll.t.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract RollTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testRoll() public { + cheats.roll(10); + assertEq(block.number, 10, "roll failed"); + } + + function testRollFuzzed(uint128 jump) public { + uint pre = block.number; + cheats.roll(block.number + jump); + assertEq(block.number, pre + jump, "roll failed"); + } + + function testRollHash() public { + assertEq(blockhash(block.number), keccak256(abi.encodePacked(block.number)), "initial block hash is incorrect"); + + cheats.roll(5); + bytes32 hash = blockhash(5); + assertTrue(blockhash(5) != 0x0, "new block hash is incorrect"); + + cheats.roll(10); + assertTrue(blockhash(5) != blockhash(10), "block hash collision"); + + cheats.roll(5); + assertEq(blockhash(5), hash, "block 5 changed hash"); + } +} diff --git a/testdata/cheats/Sign.t.sol b/testdata/cheats/Sign.t.sol new file mode 100644 index 000000000000..4dc195409ad8 --- /dev/null +++ b/testdata/cheats/Sign.t.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract SignTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testSignDigest(uint248 pk, bytes32 digest) public { + cheats.assume(pk != 0); + + (uint8 v, bytes32 r, bytes32 s) = cheats.sign(pk, digest); + address expected = cheats.addr(pk); + address actual = ecrecover(digest, v, r, s); + + assertEq(actual, expected, "digest signer did not match"); + } + + function testSignMessage(uint248 pk, bytes memory message) public { + testSignDigest(pk, keccak256(message)); + } +} diff --git a/testdata/cheats/Store.t.sol b/testdata/cheats/Store.t.sol new file mode 100644 index 000000000000..64d6e7d400f2 --- /dev/null +++ b/testdata/cheats/Store.t.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract Storage { + uint public slot0 = 10; + uint public slot1 = 20; +} + +contract StoreTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + Storage store; + + function setUp() public { + store = new Storage(); + } + + function testStore() public { + assertEq(store.slot0(), 10, "initial value for slot 0 is incorrect"); + assertEq(store.slot1(), 20, "initial value for slot 1 is incorrect"); + + cheats.store(address(store), bytes32(0), bytes32(uint(1))); + assertEq(store.slot0(), 1, "store failed"); + assertEq(store.slot1(), 20, "store failed"); + } + + function testStoreFuzzed(uint256 slot0, uint256 slot1) public { + assertEq(store.slot0(), 10, "initial value for slot 0 is incorrect"); + assertEq(store.slot1(), 20, "initial value for slot 1 is incorrect"); + + cheats.store(address(store), bytes32(0), bytes32(slot0)); + cheats.store(address(store), bytes32(uint(1)), bytes32(slot1)); + assertEq(store.slot0(), slot0, "store failed"); + assertEq(store.slot1(), slot1, "store failed"); + } +} diff --git a/testdata/cheats/Warp.t.sol b/testdata/cheats/Warp.t.sol new file mode 100644 index 000000000000..c4465b961ced --- /dev/null +++ b/testdata/cheats/Warp.t.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "./Cheats.sol"; + +contract WarpTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testWarp() public { + cheats.warp(10); + assertEq(block.timestamp, 10, "warp failed"); + } + + function testWarpFuzzed(uint128 jump) public { + uint pre = block.timestamp; + cheats.warp(block.timestamp + jump); + assertEq(block.timestamp, pre + jump, "warp failed"); + } +} diff --git a/testdata/core/Abstract.t.sol b/testdata/core/Abstract.t.sol new file mode 100644 index 000000000000..0ac0411e30f7 --- /dev/null +++ b/testdata/core/Abstract.t.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +contract TestFixture { + function something() public pure returns (string memory) { + return "something"; + } +} + +abstract contract AbstractTestBase { + TestFixture fixture; + + function testSomething() public { + fixture.something(); + } +} + +contract AbstractTest is AbstractTestBase { + function setUp() public { + fixture = new TestFixture(); + } +} diff --git a/testdata/core/DSStyle.t.sol b/testdata/core/DSStyle.t.sol new file mode 100644 index 000000000000..93d8b1f0ddbe --- /dev/null +++ b/testdata/core/DSStyle.t.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; + +contract DSStyleTest is DSTest { + function testFailingAssertions() public { + emit log_string("assertionOne"); + assertEq(uint(1), uint(2)); + emit log_string("assertionTwo"); + assertEq(uint(3), uint(4)); + emit log_string("done"); + } +} diff --git a/testdata/core/DappToolsParity.t.sol b/testdata/core/DappToolsParity.t.sol new file mode 100644 index 000000000000..53dfa7281369 --- /dev/null +++ b/testdata/core/DappToolsParity.t.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; + +contract DSStyleTest is DSTest { + function chainId() internal view returns (uint256 id) { + assembly { + id := chainid() + } + } + + function testAddresses() public { + assertEq(msg.sender, 0x00a329c0648769A73afAc7F9381E08FB43dBEA72, "sender account is incorrect"); + assertEq(tx.origin, 0x00a329c0648769A73afAc7F9381E08FB43dBEA72, "origin account is incorrect"); + assertEq(address(this), 0xb4c79daB8f259C7Aee6E5b2Aa729821864227e84, "test contract address is incorrect"); + } + + function testEnvironment() public { + assertEq(chainId(), 99, "chain id is incorrect"); + assertEq(block.number, 0); + assertEq( + blockhash(block.number), + keccak256(abi.encodePacked(block.number)), + "blockhash is incorrect" + ); + assertEq(block.coinbase, 0x0000000000000000000000000000000000000000, "coinbase is incorrect"); + assertEq(block.timestamp, 0, "timestamp is incorrect"); + assertEq(block.difficulty, 0, "difficulty is incorrect"); + } +} diff --git a/testdata/core/FailingSetup.t.sol b/testdata/core/FailingSetup.t.sol new file mode 100644 index 000000000000..80bc9bfb5ede --- /dev/null +++ b/testdata/core/FailingSetup.t.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; + +contract FailingSetupTest is DSTest { + event Test(uint256 n); + + function setUp() public { + emit Test(42); + require(false, "setup failed predictably"); + } + + function testFailShouldBeMarkedAsFailedBecauseOfSetup() public { + emit log("setup did not fail"); + } +} diff --git a/testdata/core/LibraryLinking.t.sol b/testdata/core/LibraryLinking.t.sol new file mode 100644 index 000000000000..ec1b423fd949 --- /dev/null +++ b/testdata/core/LibraryLinking.t.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; + +library Lib { + function plus100(uint256 a) public pure returns (uint256) { + return a + 100; + } +} + +library NestedLib { + function nestedPlus100Plus1(uint256 a) public pure returns (uint256) { + return Lib.plus100(a) + 1; + } +} + +contract LibraryConsumer { + function consume(uint256 a) public pure returns (uint256) { + return Lib.plus100(a); + } + + function consumeNested(uint256 a) public pure returns (uint256) { + return NestedLib.nestedPlus100Plus1(a); + } +} + +contract LibraryLinkingTest is DSTest { + LibraryConsumer consumer; + + function setUp() public { + consumer = new LibraryConsumer(); + } + + function testDirect() public { + assertEq(consumer.consume(1), 101, "library call failed"); + } + + function testNested() public { + assertEq(consumer.consumeNested(1), 102, "nested library call failed"); + } +} diff --git a/testdata/core/PaymentFailure.t.sol b/testdata/core/PaymentFailure.t.sol new file mode 100644 index 000000000000..6a13c13ee7ac --- /dev/null +++ b/testdata/core/PaymentFailure.t.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "../cheats/Cheats.sol"; + +contract Payable { + function pay() payable public {} +} + +contract PaymentFailureTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + function testCantPay() public { + Payable target = new Payable(); + cheats.prank(address(1)); + target.pay{value: 1}(); + } +} diff --git a/testdata/core/Reverting.t.sol b/testdata/core/Reverting.t.sol new file mode 100644 index 000000000000..5d826ba643fc --- /dev/null +++ b/testdata/core/Reverting.t.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +contract RevertingTest { + function testFailRevert() public pure { + require(false, "should revert here"); + } +} diff --git a/testdata/core/SetupConsistency.t.sol b/testdata/core/SetupConsistency.t.sol new file mode 100644 index 000000000000..1fda35377e95 --- /dev/null +++ b/testdata/core/SetupConsistency.t.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; + +contract SetupConsistencyCheck is DSTest { + uint256 two; + uint256 four; + uint256 result; + + function setUp() public { + two = 2; + four = 4; + result = 0; + } + + function testAdd() public { + assertEq(result, 0); + result = two + four; + assertEq(result, 6); + } + + function testMultiply() public { + assertEq(result, 0); + result = two * four; + assertEq(result, 8); + } +} diff --git a/testdata/fixtures/GetCode/UnlinkedContract.sol b/testdata/fixtures/GetCode/UnlinkedContract.sol new file mode 100644 index 000000000000..d6b673c34ca5 --- /dev/null +++ b/testdata/fixtures/GetCode/UnlinkedContract.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +library SmolLibrary { + function add(uint256 a, uint256 b) public pure returns (uint256 c) { + c = a + b; + } +} + +contract UnlinkedContract { + function complicated(uint256 a, uint256 b, uint256 c) public pure returns (uint256 d) { + d = SmolLibrary.add(SmolLibrary.add(a, b), c); + } +} diff --git a/testdata/fixtures/GetCode/WorkingContract.json b/testdata/fixtures/GetCode/WorkingContract.json new file mode 100644 index 000000000000..1127effbe713 --- /dev/null +++ b/testdata/fixtures/GetCode/WorkingContract.json @@ -0,0 +1,27 @@ +{ + "abi": [ + { + "inputs": [], + "name": "secret", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x6080604052348015600f57600080fd5b50607c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063d1efd30d14602d575b600080fd5b6034602a81565b60405190815260200160405180910390f3fea26469706673582212206740fcc626175d58a151da7fbfca1775ea4d3ababf7f3168347dab89488f6a4264736f6c634300080a0033", + "sourceMap": "64:69:28:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063d1efd30d14602d575b600080fd5b6034602a81565b60405190815260200160405180910390f3fea26469706673582212206740fcc626175d58a151da7fbfca1775ea4d3ababf7f3168347dab89488f6a4264736f6c634300080a0033", + "sourceMap": "64:69:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;95:35;;128:2;95:35;;;;;160:25:35;;;148:2;133:18;95:35:28;;;;;;", + "linkReferences": {} + } +} diff --git a/testdata/fixtures/GetCode/WorkingContract.sol b/testdata/fixtures/GetCode/WorkingContract.sol new file mode 100644 index 000000000000..1f3147e39452 --- /dev/null +++ b/testdata/fixtures/GetCode/WorkingContract.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +contract WorkingContract { + uint256 constant public secret = 42; +} diff --git a/utils/testdata/interfaceTest.sol b/testdata/fixtures/SolidityGeneration/GeneratedNamedInterface.sol similarity index 100% rename from utils/testdata/interfaceTest.sol rename to testdata/fixtures/SolidityGeneration/GeneratedNamedInterface.sol diff --git a/utils/testdata/interfaceTestNoName.sol b/testdata/fixtures/SolidityGeneration/GeneratedUnnamedInterface.sol similarity index 100% rename from utils/testdata/interfaceTestNoName.sol rename to testdata/fixtures/SolidityGeneration/GeneratedUnnamedInterface.sol diff --git a/utils/testdata/interfaceTestABI.json b/testdata/fixtures/SolidityGeneration/InterfaceABI.json similarity index 100% rename from utils/testdata/interfaceTestABI.json rename to testdata/fixtures/SolidityGeneration/InterfaceABI.json diff --git a/testdata/fuzz/Fuzz.t.sol b/testdata/fuzz/Fuzz.t.sol new file mode 100644 index 000000000000..31c2df9c0a75 --- /dev/null +++ b/testdata/fuzz/Fuzz.t.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; + +contract FuzzTest is DSTest { + constructor() { + emit log("constructor"); + } + + function setUp() public { + emit log("setUp"); + } + + function testFailFuzz(uint8 x) public { + emit log("testFailFuzz"); + require(x == 5, "should revert"); + } + + function testSuccessfulFuzz(uint128 a, uint128 b) public { + emit log("testSuccessfulFuzz"); + assertEq(uint256(a) + uint256(b), uint256(a) + uint256(b)); + } +} diff --git a/forge/testdata/TestNumbers.sol b/testdata/fuzz/FuzzNumbers.t.sol similarity index 81% rename from forge/testdata/TestNumbers.sol rename to testdata/fuzz/FuzzNumbers.t.sol index 6be8929dab73..ec5d15922e6e 100644 --- a/forge/testdata/TestNumbers.sol +++ b/testdata/fuzz/FuzzNumbers.t.sol @@ -1,8 +1,10 @@ -pragma solidity ^0.8.0; +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; -import "./DsTest.sol"; +import "ds-test/test.sol"; -contract TestNumbers is DSTest { +// See https://github.com/gakonst/foundry/pull/735 for context +contract FuzzNumbersTest is DSTest { function testPositive(uint256) public { assertTrue(true); } diff --git a/forge/testdata/DsTest.sol b/testdata/lib/ds-test/src/test.sol similarity index 99% rename from forge/testdata/DsTest.sol rename to testdata/lib/ds-test/src/test.sol index 192c903b7fc6..96d3c1543453 100644 --- a/forge/testdata/DsTest.sol +++ b/testdata/lib/ds-test/src/test.sol @@ -1,4 +1,3 @@ -// Taken from: https://github.com/dapphub/ds-test/blob/0a5da56b0d65960e6a994d2ec8245e6edd38c248/src/test.sol // SPDX-License-Identifier: GPL-3.0-or-later // This program is free software: you can redistribute it and/or modify diff --git a/forge/testdata/DebugLogsTest.sol b/testdata/logs/DebugLogs.t.sol similarity index 61% rename from forge/testdata/DebugLogsTest.sol rename to testdata/logs/DebugLogs.t.sol index 00f8960f53a3..923141033642 100644 --- a/forge/testdata/DebugLogsTest.sol +++ b/testdata/logs/DebugLogs.t.sol @@ -1,39 +1,39 @@ -pragma solidity 0.8.0; +pragma solidity >=0.8.0; -import "./DsTest.sol"; +import "ds-test/test.sol"; contract DebugLogsTest is DSTest { - constructor() public { - emit log("constructor"); + constructor() { + emit log_uint(0); } function setUp() public { - emit log("setUp"); + emit log_uint(1); } function test1() public { - emit log("one"); + emit log_uint(2); } function test2() public { - emit log("two"); + emit log_uint(3); } function testFailWithRevert() public { Fails fails = new Fails(); - emit log("three"); + emit log_uint(4); fails.failure(); } function testFailWithRequire() public { - emit log("four"); + emit log_uint(5); require(false); } } contract Fails is DSTest { function failure() public { - emit log("failure"); + emit log_uint(100); revert(); } } diff --git a/testdata/logs/HardhatLogs.t.sol b/testdata/logs/HardhatLogs.t.sol new file mode 100644 index 000000000000..771b76a69c84 --- /dev/null +++ b/testdata/logs/HardhatLogs.t.sol @@ -0,0 +1,1553 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +contract HardhatLogsTest { + constructor() { + console.log("constructor"); + } + + function testInts() public view { + console.log(0); + console.log(1); + console.log(2); + console.log(3); + } + + function testStrings() public view { + console.log("testStrings"); + } + + function testMisc() public view { + console.log("testMisc", address(1)); + console.log("testMisc", 42); + } +} + +library console { + address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); + + function _sendLogPayload(bytes memory payload) private view { + uint256 payloadLength = payload.length; + address consoleAddress = CONSOLE_ADDRESS; + assembly { + let payloadStart := add(payload, 32) + let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) + } + } + + function log() internal view { + _sendLogPayload(abi.encodeWithSignature("log()")); + } + + function logInt(int p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); + } + + function logUint(uint p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); + } + + function logString(string memory p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); + } + + function logBool(bool p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); + } + + function logAddress(address p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); + } + + function logBytes(bytes memory p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); + } + + function logBytes1(bytes1 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); + } + + function logBytes2(bytes2 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); + } + + function logBytes3(bytes3 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); + } + + function logBytes4(bytes4 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); + } + + function logBytes5(bytes5 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); + } + + function logBytes6(bytes6 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); + } + + function logBytes7(bytes7 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); + } + + function logBytes8(bytes8 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); + } + + function logBytes9(bytes9 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); + } + + function logBytes10(bytes10 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); + } + + function logBytes11(bytes11 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); + } + + function logBytes12(bytes12 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); + } + + function logBytes13(bytes13 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); + } + + function logBytes14(bytes14 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); + } + + function logBytes15(bytes15 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); + } + + function logBytes16(bytes16 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); + } + + function logBytes17(bytes17 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); + } + + function logBytes18(bytes18 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); + } + + function logBytes19(bytes19 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); + } + + function logBytes20(bytes20 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); + } + + function logBytes21(bytes21 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); + } + + function logBytes22(bytes22 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); + } + + function logBytes23(bytes23 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); + } + + function logBytes24(bytes24 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); + } + + function logBytes25(bytes25 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); + } + + function logBytes26(bytes26 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); + } + + function logBytes27(bytes27 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); + } + + function logBytes28(bytes28 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); + } + + function logBytes29(bytes29 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); + } + + function logBytes30(bytes30 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); + } + + function logBytes31(bytes31 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); + } + + function logBytes32(bytes32 p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); + } + + function log(uint p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); + } + + function log(string memory p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); + } + + function log(bool p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); + } + + function log(address p0) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); + } + + function log(uint p0, uint p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); + } + + function log(uint p0, string memory p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); + } + + function log(uint p0, bool p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); + } + + function log(uint p0, address p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); + } + + function log(string memory p0, uint p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); + } + + function log(string memory p0, string memory p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); + } + + function log(string memory p0, bool p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); + } + + function log(string memory p0, address p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); + } + + function log(bool p0, uint p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); + } + + function log(bool p0, string memory p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); + } + + function log(bool p0, bool p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); + } + + function log(bool p0, address p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); + } + + function log(address p0, uint p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); + } + + function log(address p0, string memory p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); + } + + function log(address p0, bool p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); + } + + function log(address p0, address p1) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); + } + + function log(uint p0, uint p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); + } + + function log(uint p0, uint p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); + } + + function log(uint p0, uint p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); + } + + function log(uint p0, uint p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); + } + + function log(uint p0, string memory p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); + } + + function log(uint p0, bool p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); + } + + function log(uint p0, bool p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); + } + + function log(uint p0, bool p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); + } + + function log(uint p0, bool p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); + } + + function log(uint p0, address p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); + } + + function log(uint p0, address p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); + } + + function log(uint p0, address p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); + } + + function log(uint p0, address p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); + } + + function log(string memory p0, uint p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); + } + + function log(string memory p0, string memory p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); + } + + function log(string memory p0, bool p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); + } + + function log(string memory p0, address p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); + } + + function log(string memory p0, address p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); + } + + function log(string memory p0, address p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); + } + + function log(string memory p0, address p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); + } + + function log(bool p0, uint p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); + } + + function log(bool p0, uint p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); + } + + function log(bool p0, uint p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); + } + + function log(bool p0, uint p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); + } + + function log(bool p0, string memory p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); + } + + function log(bool p0, bool p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); + } + + function log(bool p0, bool p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); + } + + function log(bool p0, bool p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); + } + + function log(bool p0, bool p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); + } + + function log(bool p0, address p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); + } + + function log(bool p0, address p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); + } + + function log(bool p0, address p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); + } + + function log(bool p0, address p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); + } + + function log(address p0, uint p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); + } + + function log(address p0, uint p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); + } + + function log(address p0, uint p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); + } + + function log(address p0, uint p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); + } + + function log(address p0, string memory p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); + } + + function log(address p0, string memory p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); + } + + function log(address p0, string memory p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); + } + + function log(address p0, string memory p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); + } + + function log(address p0, bool p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); + } + + function log(address p0, bool p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); + } + + function log(address p0, bool p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); + } + + function log(address p0, bool p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); + } + + function log(address p0, address p1, uint p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); + } + + function log(address p0, address p1, string memory p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); + } + + function log(address p0, address p1, bool p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); + } + + function log(address p0, address p1, address p2) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); + } + + function log(uint p0, uint p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, uint p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, string memory p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, bool p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); + } + + function log(uint p0, address p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, uint p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, string memory p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, bool p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); + } + + function log(string memory p0, address p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, uint p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, string memory p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, bool p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); + } + + function log(bool p0, address p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, uint p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, string memory p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, bool p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, uint p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, string memory p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, string memory p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, string memory p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, string memory p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, bool p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, uint p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, string memory p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, bool p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); + } + + function log(address p0, address p1, address p2, address p3) internal view { + _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); + } +} diff --git a/testdata/trace/ConflictingSignatures.t.sol b/testdata/trace/ConflictingSignatures.t.sol new file mode 100644 index 000000000000..10faa73f085f --- /dev/null +++ b/testdata/trace/ConflictingSignatures.t.sol @@ -0,0 +1,41 @@ +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "../cheats/Cheats.sol"; + +contract ReturnsNothing { + function func() public pure {} +} + +contract ReturnsString { + function func() public pure returns (string memory) { + return "string"; + } +} + +contract ReturnsUint { + function func() public pure returns (uint256) { + return 1; + } +} + +contract ConflictingSignaturesTest is DSTest { + ReturnsNothing retsNothing; + ReturnsString retsString; + ReturnsUint retsUint; + + function setUp() public { + retsNothing = new ReturnsNothing(); + retsString = new ReturnsString(); + retsUint = new ReturnsUint(); + } + + /// Tests that traces are decoded properly when multiple + /// functions have the same 4byte signature, but different + /// return values. + function testTraceWithConflictingSignatures() public { + retsNothing.func(); + retsString.func(); + retsUint.func(); + } +} diff --git a/testdata/trace/Trace.t.sol b/testdata/trace/Trace.t.sol new file mode 100644 index 000000000000..9737297207fe --- /dev/null +++ b/testdata/trace/Trace.t.sol @@ -0,0 +1,101 @@ +pragma solidity >=0.8.0; + +import "ds-test/test.sol"; +import "../cheats/Cheats.sol"; + +contract RecursiveCall { + TraceTest factory; + + event Depth(uint256 depth); + event ChildDepth(uint256 childDepth); + event CreatedChild(uint256 childDepth); + + constructor(address _factory) { + factory = TraceTest(_factory); + } + + function recurseCall(uint256 neededDepth, uint256 depth) public returns (uint256) { + if (depth == neededDepth) { + this.negativeNum(); + return neededDepth; + } + + uint256 childDepth = this.recurseCall(neededDepth, depth + 1); + emit ChildDepth(childDepth); + + this.someCall(); + emit Depth(depth); + + return depth; + } + + function recurseCreate(uint256 neededDepth, uint256 depth) public returns (uint256) { + if (depth == neededDepth) { + return neededDepth; + } + + RecursiveCall child = factory.create(); + emit CreatedChild(depth + 1); + + uint256 childDepth = child.recurseCreate(neededDepth, depth + 1); + emit ChildDepth(childDepth); + emit Depth(depth); + + return depth; + } + + function someCall() public pure {} + + function negativeNum() public pure returns (int256) { + return -1000000000; + } +} + +contract TraceTest is DSTest { + Cheats constant cheats = Cheats(HEVM_ADDRESS); + + uint256 nodeId = 0; + RecursiveCall first; + + function setUp() public { + first = this.create(); + } + + function create() public returns (RecursiveCall) { + RecursiveCall node = new RecursiveCall(address(this)); + cheats.label( + address(node), + string(abi.encodePacked("Node ", uintToString(nodeId++))) + ); + + return node; + } + + function testRecurseCall() public { + first.recurseCall(8, 0); + } + + function testRecurseCreate() public { + first.recurseCreate(8, 0); + } +} + +function uintToString(uint256 value) pure returns (string memory) { + // Taken from OpenZeppelin + if (value == 0) { + return "0"; + } + uint256 temp = value; + uint256 digits; + while (temp != 0) { + digits++; + temp /= 10; + } + bytes memory buffer = new bytes(digits); + while (value != 0) { + digits -= 1; + buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); + value /= 10; + } + return string(buffer); +} diff --git a/utils/src/lib.rs b/utils/src/lib.rs index 5e71a4829a01..5eed2bff49b6 100644 --- a/utils/src/lib.rs +++ b/utils/src/lib.rs @@ -989,29 +989,31 @@ mod tests { solc::{artifacts::CompactContractBytecode, Project, ProjectPathsConfig}, types::{Address, Bytes}, }; - use std::path::PathBuf; #[test] - #[ignore] // TODO: This needs to be re-enabled one it's fixed in ethers-solc. fn test_linking() { - let lib_test_json_lib_test = "6101d1610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806314ba3f121461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006064826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156101905761018f610112565b5b82820290509291505056fea264697066735822122089bbb5614fb9e62f207b40682b397b25f2000c514857bf7959055b0d9b5dcfbf64736f6c634300080b0033"; - let lib_test_nested_json_lib_test_nested = "610266610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80639acc23361461003a575b600080fd5b610054600480360381019061004f9190610116565b61006a565b604051610061919061015c565b60405180910390f35b60007347e9fbef8c83a1714f1951f142132e6e90f5fa5d6314ba3f1260656040518263ffffffff1660e01b81526004016100a491906101bc565b602060405180830381865af41580156100c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e59190610203565b9050919050565b600080fd5b600381106100fe57600080fd5b50565b600081359050610110816100f1565b92915050565b60006020828403121561012c5761012b6100ec565b5b600061013a84828501610101565b91505092915050565b6000819050919050565b61015681610143565b82525050565b6000602082019050610171600083018461014d565b92915050565b6000819050919050565b6000819050919050565b60006101a66101a161019c84610177565b610181565b610143565b9050919050565b6101b68161018b565b82525050565b60006020820190506101d160008301846101ad565b92915050565b6101e081610143565b81146101eb57600080fd5b50565b6000815190506101fd816101d7565b92915050565b600060208284031215610219576102186100ec565b5b6000610227848285016101ee565b9150509291505056fea26469706673582212204d96467c5d42f97ecaa460cca5137364d61ae850ee0be7c2d9c5ffb045bf8dc364736f6c634300080b0033"; + let lib_test_json_lib_test = "6101cd610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806368ba353b1461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006064826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561018c5761018b610112565b5b82820190509291505056fea2646970667358221220778447127e949080286c183992b58e2443f5c31f334df274cd2beb7e941a360664736f6c634300080c0033"; + let lib_test_nested_json_lib_test_nested = "610286610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80639b78e80e1461003a575b600080fd5b610054600480360381019061004f9190610132565b61006a565b604051610061919061016e565b60405180910390f35b600060017347e9fbef8c83a1714f1951f142132e6e90f5fa5d6368ba353b846040518263ffffffff1660e01b81526004016100a5919061016e565b602060405180830381865af41580156100c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e6919061019e565b6100f091906101fa565b9050919050565b600080fd5b6000819050919050565b61010f816100fc565b811461011a57600080fd5b50565b60008135905061012c81610106565b92915050565b600060208284031215610148576101476100f7565b5b60006101568482850161011d565b91505092915050565b610168816100fc565b82525050565b6000602082019050610183600083018461015f565b92915050565b60008151905061019881610106565b92915050565b6000602082840312156101b4576101b36100f7565b5b60006101c284828501610189565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610205826100fc565b9150610210836100fc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610245576102446101cb565b5b82820190509291505056fea2646970667358221220cb0ed13100a02c53cf4d61c85977622ea3da98f2052bd0a7b549d0f70ca7ba7b64736f6c634300080c0033"; let contract_names = [ - "DsTestMini.json:DsTestMini", - "LibLinkingTest.json:LibLinkingTest", - "LibTest.json:LibTest", - "LibTestNested.json:LibTestNested", - "Main.json:Main", + "DSTest.json:DSTest", + "Lib.json:Lib", + "LibraryConsumer.json:LibraryConsumer", + "LibraryLinkingTest.json:LibraryLinkingTest", + "NestedLib.json:NestedLib", ]; - let root = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("testdata/linking"); - let paths = ProjectPathsConfig::builder().root(&root).sources(&root).build().unwrap(); + let paths = ProjectPathsConfig::builder() + .root("../testdata") + .sources("../testdata") + .build() + .unwrap(); let project = Project::builder().paths(paths).ephemeral().no_artifacts().build().unwrap(); let output = project.compile().unwrap(); let contracts = output .into_artifacts() + .filter(|(i, _)| contract_names.contains(&i.slug().as_str())) .map(|(i, c)| (i.slug(), c.into_contract_bytecode())) .collect::>(); @@ -1029,10 +1031,10 @@ mod tests { |file, key| (format!("{}.json:{}", key, key), file, key), |post_link_input| { match post_link_input.fname.as_str() { - "DsTestMini.json:DsTestMini" => { + "DSTest.json:DSTest" => { assert_eq!(post_link_input.dependencies.len(), 0); } - "LibLinkingTest.json:LibLinkingTest" => { + "LibraryLinkingTest.json:LibraryLinkingTest" => { assert_eq!(post_link_input.dependencies.len(), 3); assert_eq!( hex::encode(post_link_input.dependencies[0].clone()), @@ -1047,17 +1049,17 @@ mod tests { lib_test_nested_json_lib_test_nested ); } - "LibTest.json:LibTest" => { + "Lib.json:Lib" => { assert_eq!(post_link_input.dependencies.len(), 0); } - "LibTestNested.json:LibTestNested" => { + "NestedLib.json:NestedLib" => { assert_eq!(post_link_input.dependencies.len(), 1); assert_eq!( hex::encode(post_link_input.dependencies[0].clone()), lib_test_json_lib_test ); } - "Main.json:Main" => { + "LibraryConsumer.json:LibraryConsumer" => { assert_eq!(post_link_input.dependencies.len(), 3); assert_eq!( hex::encode(post_link_input.dependencies[0].clone()), @@ -1159,19 +1161,30 @@ mod tests { #[test] #[cfg(any(target_os = "linux", target_os = "macos"))] fn abi2solidity() { - let contract_abi: Abi = - serde_json::from_slice(&std::fs::read("testdata/interfaceTestABI.json").unwrap()) - .unwrap(); + let contract_abi: Abi = serde_json::from_slice( + &std::fs::read("../testdata/fixtures/SolidityGeneration/InterfaceABI.json").unwrap(), + ) + .unwrap(); assert_eq!( - std::str::from_utf8(&std::fs::read("testdata/interfaceTest.sol").unwrap()) + std::str::from_utf8( + &std::fs::read( + "../testdata/fixtures/SolidityGeneration/GeneratedNamedInterface.sol" + ) .unwrap() - .to_string(), + ) + .unwrap() + .to_string(), abi_to_solidity(&contract_abi, "test").unwrap() ); assert_eq!( - std::str::from_utf8(&std::fs::read("testdata/interfaceTestNoName.sol").unwrap()) + std::str::from_utf8( + &std::fs::read( + "../testdata/fixtures/SolidityGeneration/GeneratedUnnamedInterface.sol" + ) .unwrap() - .to_string(), + ) + .unwrap() + .to_string(), abi_to_solidity(&contract_abi, "").unwrap() ); } diff --git a/utils/testdata/linking/LinkTest.sol b/utils/testdata/linking/LinkTest.sol deleted file mode 100644 index b6ae16ba928f..000000000000 --- a/utils/testdata/linking/LinkTest.sol +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity 0.8.11; - -//import "./LibTest.sol"; - -// a library that needs to be linked with another library -library LibTestNested { - enum TestEnum2 { - A, - B, - C - } - - function foobar(TestEnum2 test) public view returns (uint256) { - return LibTest.foobar(101); - } -} - -// a library -library LibTest { - function foobar(uint256 a) public view returns (uint256) { - return a * 100; - } -} - - -// a contract that uses 2 linked libraries -contract Main { - function foo() public returns (uint256) { - return LibTest.foobar(1); - } - - function bar() public returns (uint256) { - return LibTestNested.foobar(LibTestNested.TestEnum2(0)); - } -} - -contract DsTestMini { - bool public failed; - - function fail() private { - failed = true; - } - - function assertEq(uint a, uint b) internal { - if (a != b) { - fail(); - } - } -} - - -contract LibLinkingTest is DsTestMini { - Main main; - function setUp() public { - main = new Main(); - } - - function testCall() public { - assertEq(100, main.foo()); - } - - function testCall2() public { - assertEq(10100, main.bar()); - } -}